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