我已经通读了关于这个问题的几乎所有答案,并尝试了十几种不同的“解决方案”,但我无法让 JSTL 在 Tomcat 8.0 中使用 servlet 3.1 的 Spring boot web 应用程序中工作。我继续收到此错误:
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.
我使用 Maven 构建项目,但也手动复制了 JAR,希望能有所帮助,但遗憾的是,它没有!我希望我只是忽略了一些愚蠢的事情。有人可以告诉我我做错了什么吗??
我已经尝试过的事情(对于所有这些,这是一个简单的 index.jsp 文件中包含的行 -
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
向我的 pom.xml 添加了以下依赖项(删除了 XML 字符以更好地格式化)
<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
这会将 jSTL-1.2.jar 放入我的 WEB-INF/lib 目录中,并且当我部署到 Tomcat 时我已经确认它在那里 - 这不起作用
根据此处的建议删除了上述依赖项并添加了这些依赖项 (http://www.murraywilliams.com/2011/11/running-jstl-1-2-on-tomcat-7-using-maven/)
<dependency> <groupId>org.glassfish.web</groupId> <artifactId>jstl-impl</artifactId> <version>1.2</version> <exclusions> <exclusion> <artifactId>servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> <exclusion> <artifactId>jsp-api</artifactId> <groupId>javax.servlet.jsp</groupId> </exclusion> </exclusions> </dependency>
这会在我的 WEB-INF/lib 目录中放置两个额外的 JAR 文件,一个 jSTL-api-1.2.jar 和 jSTL-impl-1.2.jar,我已经确认它们在我部署到 Tomcat 时就在那里 - 这不会'工作
我还尝试将每个依赖项的范围更改为“已提供”,同时将相应的 JAR 放入 Tomcat 的 lib 目录并重新启动 Tomcat,但仍然无法正常工作。
这是我的 web.xml header
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
无论如何,非常感谢任何帮助!
最佳答案
尝试检查 Tomcat 的 catalina.properties
文件。找到名为 tomcat.util.scan.StandardJarScanFilter.jarsToScan
的设置。添加 taglib jar 的名称。在我的例子中,我添加了 taglibs*.jar
因为我的 jar 被称为 taglibs-standard-impl-1.2.5.jar
和 taglibs-standard-spec-1.2 .5.jar
.
如果 catalina.properties
在 jarsToSkip
设置中有很多 jar,可能找不到标签库,因此将它们添加到 jarsToScan
可以修复它。 Tomcat高手,理解有误请指正。但是,这已经为我解决了。
关于jsp - 无法使用 Servlet 3.1 使用 JSTL 1.2 获得 Tomcat 8.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32546697/