我制作了一个Spring MVC webapp,其中我使用了JSTL标签 . 我是由Gradle推出的,它工作得很好:
gradle jettyRunWar
但是,当我在Tomcat中使用相同的WAR文件时,出现错误:
绝对uri:http://java.sun.com/jsp/jstl/core无法在web.xml或使用此应用程序部署的jar文件中解析 .
使用stackoverflow,我能够修复 . 问题出在我的build.gradle文件中,我没有指定JSTL依赖项 . 我解决了这个问题,我也能在Tomcat中运行我的webapp .
我的问题是为什么当Tomcat没有时,Jetty能够运行这个应用程序 . 我怎么能避免这个问题?
1 回答
Using JSTL Taglibs
JavaServer Pages Standlard标记库(
JSTL
)是Jetty发行版的一部分,当您选择JSP
的味道时,它会自动放在classpath
上 . 对于jetty maven插件,它也会自动出现在classpath
上,该插件使用ApacheJSP
引擎,如Jetty-9.2 . 嵌入如果您在
embedded
场景中使用jetty,并且需要使用JSTL
,则必须确保JSTL jar包含在容器的classpath
上 - 即classpath
,它是webapp的classpath
的父级 . 这是源自Java EE规范的限制 .您将包含的jar将取决于您正在使用的JSP的风格 .
Tomcat 从未包括
JSTL
.您应该将
jstl
和标准 jar 放入WEB-INF/lib