提问者:小点点

在Jetty中运行但不在Tomcat中运行的Webapp


我制作了一个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却不能。我如何避免这个问题?


共1个答案

匿名用户

使用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