首页 文章

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

提问于
浏览
1

我制作了一个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 回答

  • 1

    Using JSTL Taglibs

    JavaServer Pages Standlard标记库( JSTL )是Jetty发行版的一部分,当您选择 JSP 的味道时,它会自动放在 classpath 上 . 对于jetty maven插件,它也会自动出现在 classpath 上,该插件使用Apache JSP 引擎,如Jetty-9.2 . 嵌入

    如果您在 embedded 场景中使用jetty,并且需要使用 JSTL ,则必须确保JSTL jar包含在容器的 classpath 上 - 即 classpath ,它是webapp的 classpath 的父级 . 这是源自Java EE规范的限制 .

    您将包含的jar将取决于您正在使用的JSP的风格 .

    Tomcat 从未包括 JSTL .

    您应该将 jstl 和标准 jar 放入 WEB-INF/lib

相关问题