我制作了一个SpringMVCwebapp,其中我使用了JSTL标签。我通过Gradle启动了它,它运行得非常好:
Gradle jettyRunWar
但是,当我在Tomcat中使用相同的WAR文件时,我收到了错误:
绝对uri:http://java.sun.com/jsp/jstl/core无法在web. xml或与此应用程序一起部署的jar文件中解析。
使用stackoverflow,我能够修复。问题出在我的build. gradle文件中,我没有指定JSTL依赖项。我修复了这个问题,并且我也能够在Tomcat中运行我的网络应用程序。
我的问题是为什么Jetty能够运行这个应用程序,而Tomcat却不能。我如何避免这个问题?
使用JSTL Taglibs
JavaServer页面标准标记库(JSTL
)是Jetty发行版的一部分,当您选择JSP
的风格时,它会自动放在类路径
上。它也会自动放在jetty maven插件的类路径
上,该插件从jetty-9.2开始使用ApacheJSP
引擎。嵌入
如果您在嵌入式
场景中使用jetty,并且您需要使用JSTL
,那么您必须确保JSTL jar包含在容器的类路径
中-即类路径
,它是webapp的类路径
的父类。这是来自JavaEE规范的限制。
你将包括的罐子将取决于你正在使用的JSP的味道。
Tomcat从未包含JSTL
。
您应该将jstl
和标准jar放在WEB-INF/lib
中