java.lang.IncompatibleClassChangeError:实现Mongo类

我无法弄清楚为什么会出现这个错误。 我尝试清理冗余的库等等。

我尝试这样做时收到错误:

mongo = new Mongo(host, port); 

有趣的是,我可以运行我从IDE(IntelliJ)制作的任何unit testing,但是当我尝试通过Tomcat运行它时,我得到了这个:

  Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com. sfatandrei.db.MongoManager]: Constructor threw exception; nested exception is java.lang.IncompatibleCla ssChangeError: Implementing class at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInst antiationStrategy.java:110) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(Constructo rResolver.java:280) ... 82 more Caused by: java.lang.IncompatibleClassChangeError: Implementing class at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2889) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2889) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) at com.mongodb.MongoOptions.reset(MongoOptions.java:47) at com.mongodb.MongoOptions.(MongoOptions.java:29) at com.mongodb.Mongo.(Mongo.java:148) at com.mongodb.Mongo.(Mongo.java:137) at com.sfatandrei.db.MongoManager.(MongoManager.java:28) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl. java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147) ... 84 more 

mvn dependency:tree -Dverbose

 [INFO] [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ mongodb-performance-test --- [INFO] com.sfatandrei:mongodb-performance-test:war:1.0 [INFO] +- junit:junit:jar:4.8.2:test [INFO] +- org.springframework:spring-core:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-asm:jar:3.1.1.RELEASE:compile [INFO] | \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for duplicate) [INFO] +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile [INFO] | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:3.1.1.RELEASE:compile [INFO] | | +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) [INFO] | | +- (org.springframework:spring-asm:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile [INFO] | | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- (org.springframework:spring-asm:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-jdbc:jar:3.1.1.RELEASE:compile [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- org.springframework:spring-tx:jar:3.1.1.RELEASE:compile [INFO] | +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-aop:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-web:jar:3.1.1.RELEASE:compile [INFO] | +- aopalliance:aopalliance:jar:1.0:compile [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-webmvc:jar:3.1.1.RELEASE:compile [INFO] | +- (org.springframework:spring-asm:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- org.springframework:spring-context-support:jar:3.1.1.RELEASE:compile [INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | | +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | | \- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-expression:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- (org.springframework:spring-web:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework.data:spring-data-mongodb:jar:1.0.0.RELEASE:compile [INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- (org.springframework:spring-expression:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | +- org.springframework.data:spring-data-commons-core:jar:1.2.0.RELEASE:compile [INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | | \- (org.springframework:spring-tx:jar:3.1.1.RELEASE:compile - omitted for duplicate) [INFO] | \- org.mongodb:mongo-java-driver:jar:2.7.1:compile [INFO] +- log4j:log4j:jar:1.2.16:compile [INFO] +- org.springframework:spring-test:jar:3.1.1.RELEASE:compile [INFO] +- commons-logging:commons-logging:jar:1.1.1:compile [INFO] +- javax.servlet:servlet-api:jar:2.5:provided [INFO] +- org.mongodb:bson:jar:2.3:compile [INFO] \- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.6:compile [INFO] \- org.codehaus.jackson:jackson-core-asl:jar:1.9.6:compile 

我使用的是jdk 7,tomcat 7.0.27,maven 3.0.3。

这看起来像是字节码级别的错误。 也许你的tomcat服务器中有两个版本的同一个库。

请参阅: 导致java.lang.IncompatibleClassChangeError的原因是什么?

如果你在JBoss下遇到这个问题,那很可能是因为JBoss将RESTeasy REST实现捆绑为默认值。 如果将自己的REST库打包到EAR / WAR文件,则需要禁用已部署库的默认RESTeasy。