我目前正在尝试将我们的构建从手动过程(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)