Ich versuche derzeit, unseren Build von einem manuellen Prozess (MyEclipse/Export als Krieg) zu einem automatischen Maven Build zu ändern.Tomcat 7.0.29 Servlet-Api Classloader Problem
Die von MyEclipse erstellte War-Anwendung wird bereitgestellt und funktioniert problemlos auf unserer Tomcat 7.0.29-Installation (Windows 7). Im MyEclipse-Build-Pfad haben wir eine Benutzerbibliothek (Tomcat) konfiguriert, die alle Jars von $CATALINA_HOME/lib
enthält.
Wir haben einige Servlet-Listener und Filter, die javax.servlet.http. * Classes (HttpSessionEvent etc) verwenden. Sie sind verpackt unter WEB-INF\classes\com\mycompany\filters
Bei der Bereitstellung des Krieges von Maven gebaut bekomme ich NoClassDefFoundError
auf der HttpSessionEvent
Klasse. Ich habe eine Spur mit der Option -verbose: class JVM gemacht und gesehen, dass die letzte geladene Klasse mein Filter aus dem Verzeichnis c:\apache\webapps\myapp\WEB-INF\classes\com\mycompany\filters
ist. Ich versuche dann, HttpSessionEvent zu laden/finde und kann dies nicht tun.
Die servlet-api.jar
ist natürlich in meinem $CATALINA_HOME\lib
Verzeichnis.
In meinem pom.xml Ich habe diese Abhängigkeit
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.29</version>
<scope>provided</scope>
</dependency>
ich keine anderen Servlet-api.jar haben Dateien überall in meinem Pfad/Classpath (doublechecked die lib/ext und unterstützt Verzeichnisse meiner jdk und jre auch)
Meine maven Abhängigkeit: Baum sieht wie folgt aus:
[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] | +- org.springframework:spring-beans:jar:3.1.0.RELEASE:compile
[INFO] | +- org.springframework:spring-core:jar:3.1.0.RELEASE:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | +- org.springframework:spring-expression:jar:3.1.0.RELEASE:compile
[INFO] | \- org.springframework:spring-asm:jar:3.1.0.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:3.1.0.RELEASE:compile
[INFO] | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework:spring-orm:jar:3.1.0.RELEASE:compile
[INFO] | +- org.springframework:spring-jdbc:jar:3.1.0.RELEASE:compile
[INFO] | \- org.springframework:spring-tx:jar:3.1.0.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:3.1.0.RELEASE:compile
[INFO] +- org.springframework:spring-test:jar:3.1.0.RELEASE:test
[INFO] +- org.aspectj:aspectjrt:jar:1.7.1:compile
[INFO] +- org.aspectj:aspectjweaver:jar:1.7.1:compile
[INFO] +- javax.faces:javax.faces-api:jar:2.1:compile
[INFO] +- com.sun.faces:jsf-impl:jar:2.1.15:compile
[INFO] +- org.primefaces:primefaces:jar:3.4.2:compile
[INFO] +- org.richfaces.core:richfaces-core-api:jar:4.2.3.Final:compile
[INFO] | \- com.google.guava:guava:jar:11.0.2:compile
[INFO] | \- com.google.code.findbugs:jsr305:jar:1.3.9:compile
[INFO] +- org.richfaces.ui:richfaces-components-ui:jar:4.2.3.Final:compile
[INFO] | \- org.richfaces.ui:richfaces-components-api:jar:4.2.3.Final:compile
[INFO] +- org.apache.tomcat:tomcat-servlet-api:jar:7.0.29:provided
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.2:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] +- org.hibernate:hibernate-core:jar:3.6.2.Final:compile
[INFO] | +- antlr:antlr:jar:2.7.6:compile
[INFO] | +- commons-collections:commons-collections:jar:3.1:compile
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | +- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile
[INFO] | \- javax.transaction:jta:jar:1.1:compile
[INFO] +- org.hibernate:hibernate-entitymanager:jar:3.6.2.Final:compile
[INFO] | +- cglib:cglib:jar:2.2:compile
[INFO] | | \- asm:asm:jar:3.1:compile
[INFO] | \- javassist:javassist:jar:3.12.0.GA:compile
[INFO] +- org.hibernate:hibernate-validator:jar:4.1.0.Final:compile
[INFO] | \- javax.validation:validation-api:jar:1.0.0.GA:compile
[INFO] +- org.apache.commons:commons-email:jar:1.2:compile
[INFO] | \- javax.activation:activation:jar:1.1:compile
[INFO] +- junit:junit:jar:4.11:test
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- com.h2database:h2:jar:1.3.170:test
ich habe auf diese für eine Weile im Internet suchen, und von dem, was ich gelesen habe, muss dies einige haben was mit dem Tomcat Classloader zu tun hat. Sehr wahrscheinlich stimmt etwas mit der Verpackung meines Krieges nicht. Ich habe jedoch noch keine Lösung gefunden.
Alle Hinweise werden sehr geschätzt!
Ich würde wahrscheinlich das Projekt klonen und alles außer einem einzigen Servlet oder Filter entfernen und versuchen, ob es funktioniert. Und/oder versuchen Sie, es auf einer anderen Engine, zum Beispiel Jetty, bereitzustellen. – biziclop