绝对的uri:http://java.sun.com/jsp/jstl/core无法在web.xml或使用此应用程序部署的jar文件中parsing

我正在使用JDK 1.7,Apache Tomcat 7.0.23,并且我已经将JSTL核心库(1.2)和STANDARD jar放在WEB_INF lib文件夹中,它不给我任何警告,但是当我尝试运行代码

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- Create Bean Instance--> <jsp:useBean id="listdomain" class="bean.PopulateMultiDomain" scope="session"></jsp:useBean> <jsp:setProperty property="*" name="listdomain"/> <c:forEach var="item" items="${listdomain.status}"> <option> <c:out value="${item}" /> </option> </c:forEach> 

它给了我以下错误:

 org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:56) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:410) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:117) org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:311) org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:152) org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) org.apache.jasper.compiler.Parser.parseDirective(Parser.java:475) org.apache.jasper.compiler.Parser.parseElements(Parser.java:1425) org.apache.jasper.compiler.Parser.parse(Parser.java:138) org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242) org.apache.jasper.compiler.ParserController.parse(ParserController.java:102) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198) org.apache.jasper.compiler.Compiler.compile(Compiler.java:373) org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

任何人都可以告诉我我犯了什么错误?

删除standard.jar 。 当TLD URI没有/jsppath时,显然是旧的JSTL 1.0版本。 JSTL 1.2在这里可用,你根本不需要一个standard.jar 。 只要/WEB-INF/lib jstl-1.2.jar就足够了。

也可以看看:

我解决了同样的问题。 我刚刚添加了JSTL-1.2.jar到/apache-tomcat-xxx/lib并设置范围在maven pom.xml中提供:

  <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>provided</scope> </dependency> 

有问题的错误也可能是由tomcat/conf/context.xml禁用的JarScanner引起的。

另请参阅从Tomcat 8.0.39升级到8.0.41会导致“扫描失败”错误 。

<JarScanner scanManifest="false"/>可以避免这两个问题。

我已经删除了范围,然后使用maven更新来解决这个问题。

 <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> **<!-- <scope>provided</scope> -->** </dependency> 

jstl lib不在tomcat lib文件夹中,所以我们必须包含它。 我不明白为什么我们被告知保持servlet-api和jstl的范围。