Web应用程序在Jetty中运行但不在Tomcat中运行

时间:2014-09-07 15:18:41

标签: spring spring-mvc jetty jstl tomcat7

我制作了一个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能够运行这个应用程序。我怎么能避免这个问题?

1 个答案:

答案 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