在jetty中替换glassfish javax.servlet.jsp

时间:2016-05-06 08:57:34

标签: java maven jsp servlets jetty

在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

1 个答案:

答案 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规范版本的所有容器中移植。