小编avh*_*vhv的帖子

Tomcat 7.0.29 servlet-api类加载器问题

我目前正在尝试将我们的构建从手动过程(MyEclipse/export as war)更改为自动Maven Build.

由MyEclipse构建的war应用程序在我们的Tomcat 7.0.29安装(Windows 7)上部署并运行正常.在MyEclipse构建路径中,我们配置了一个用户库(tomcat),其中包含来自的所有jar $CATALINA_HOME/lib.

我们有一些使用javax.servlet.http.*classes(HttpSessionEvent等)的servlet监听器和过滤器.它们是打包的WEB-INF\classes\com\mycompany\filters

在部署由Maven构建的战争时,我NoClassDefFoundError上了HttpSessionEvent课.我用-verbose:class JVM选项进行了跟踪,我看到最后加载的类是我的c:\apache\webapps\myapp\WEB-INF\classes\com\mycompany\filters目录过滤器 .然后我尝试加载/查找HttpSessionEvent并且无法执行此操作.

servlet-api.jar当然是在我的$CATALINA_HOME\lib目录中.

在我的pom.xml中,我有这种依赖

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>7.0.29</version>
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我的路径/类路径中的任何地方都没有其他servlet-api.jar文件(双重检查我的jdk和jre的lib/ext和endorsed目录)

我的maven依赖:树看起来像这样:

[INFO] +- log4j:log4j:jar:1.2.15:compile
[INFO] |  \- javax.mail:mail:jar:1.4:compile
[INFO] +- jstl:jstl:jar:1.2:compile
[INFO] +- org.jdom:jdom:jar:1.1:provided
[INFO] +- com.sun.xml.rpc:jaxrpc-impl:jar:1.1.3_01:provided
[INFO] |  +- javax.xml:jaxrpc-api:jar:1.1:provided
[INFO] |  +- com.sun.xml.messaging.saaj:saaj-impl:jar:1.3:provided
[INFO] |  |  \- javax.xml.soap:saaj-api:jar:1.3:provided
[INFO] |  +- com.sun.xml.rpc:jaxrpc-spi:jar:1.1.3_01:provided
[INFO] |  \- com.sun.xml.fastinfoset:FastInfoset:jar:1.0.2:provided
[INFO] +- org.apache.lucene:lucene-core:jar:3.6.0:compile
[INFO] +- org.springframework:spring-context:jar:3.1.0.RELEASE:compile
[INFO] |  +- …
Run Code Online (Sandbox Code Playgroud)

java tomcat servlets classloader

5
推荐指数
1
解决办法
2934
查看次数

标签 统计

classloader ×1

java ×1

servlets ×1

tomcat ×1