在jetty版本9.2中,默认的jsp依赖项从glasfish更改为apache。
http://www.eclipse.org/jetty/documentation/current/configuring-jsp.html
我试图将项目中的所有jsp依赖项替换为apache但是我没有成功将javax.servlet.jsp替换为正在运行的apache依赖项:
groupId: org.glassfish.web
artifactId: javax.servlet.jsp
version: 2.3.2
那么我是否应该使用替代依赖,或者是org.glassfish.web:javax.servlet仍然是打包可运行战争时最好的依赖?
删除javax.servlet.jsp依赖项时抛出的异常是:
java.lang.ClassNotFoundException: org.apache.jasper.servlet.JspServlet
答案 0 :(得分:0)
您只需要构建时类路径上的api库。这些应标记为“提供”范围,这表示它们不应捆绑在任何生成的工件(WAR)中,因为它们将在运行时由Servlet容器提供。
因此,在您的pom中,您应该拥有以下内容:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
在没有任何其他容器特定行为的情况下,上述更改使您的应用程序可以在符合相关Servlet规范版本的所有容器中移植。