Tôi hiện đang cố gắng thay đổi xây dựng của chúng tôi từ một quy trình thủ công (MyEclipse/export as war) thành một Maven Build tự động.Tomcat 7.0.29 vấn đề bộ nạp lớp servlet-api
Ứng dụng chiến tranh được xây dựng bởi MyEclipse triển khai và hoạt động tốt trên bản cài đặt Tomcat 7.0.29 của chúng tôi (Windows 7). Trong đường dẫn xây dựng MyEclipse, chúng ta đã cấu hình một thư viện người dùng (tomcat), chứa tất cả các lọ từ $CATALINA_HOME/lib
.
Chúng tôi có một số trình nghe và bộ lọc servlet sử dụng lớp javax.servlet.http. * (HttpSessionEvent, v.v.). Chúng được đóng gói theo số WEB-INF\classes\com\mycompany\filters
Khi triển khai chiến tranh do Maven xây dựng, tôi nhận được NoClassDefFoundError
trên lớp HttpSessionEvent
. Tôi đã làm một dấu vết với -verbose: lớp JVM tùy chọn và tôi thấy rằng lớp cuối cùng được nạp là bộ lọc của tôi từ thư mục c:\apache\webapps\myapp\WEB-INF\classes\com\mycompany\filters
. Sau đó tôi cố gắng tải/tìm HttpSessionEvent và không thể làm như vậy.
Tất nhiên, servlet-api.jar
là trong thư mục $CATALINA_HOME\lib
của tôi.
Trong pom.xml của tôi, tôi có sự phụ thuộc này
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.29</version>
<scope>provided</scope>
</dependency>
Tôi không có file servlet-api.jar khác bất cứ nơi nào trong con đường của tôi/classpath (doublechecked thư mục lib/ext và thư mục xác nhận của jdk và jre của tôi cũng)
phụ thuộc maven của tôi: cây trông như thế này:
[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
tôi đã tìm kiếm về vấn đề này trong một thời gian trên internet, và từ những gì tôi đã đọc phải có một số điều cần làm với trình nạp lớp tomcat. Rất có thể có điều gì đó sai trái với việc đóng gói chiến tranh của tôi. Tuy nhiên, tôi chưa tìm được giải pháp nào.
Mọi con trỏ sẽ được đánh giá cao!
Tôi có thể sao chép dự án và xóa mọi thứ trừ một servlet hoặc bộ lọc duy nhất và thử nếu nó hoạt động. Và/hoặc cố gắng triển khai nó đến một công cụ khác, Jetty chẳng hạn. – biziclop