java.lang.IncompatibleClassChangeError: Implementing class Mongo

匿名 (未验证) 提交于 2019-12-03 10:24:21

问题:

I am not able to figure out why I get this error. I tried cleaning up libs that are redundant and so forth.

I get the error when I try to do:

  mongo = new Mongo(host, port); 

The funny thing is that I can run any unit tests I made from IDE (IntelliJ), but when I try to run it through Tomcat I get this:

  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 

I am using jdk 7, tomcat 7.0.27, maven 3.0.3.

回答1:

That looks like an error of byte code level. Maybe you have two versions of the same library in your tomcat server.

See: What causes java.lang.IncompatibleClassChangeError?



回答2:

If you get this problem under JBoss, it's most likely due to the fact that JBoss bundles RESTeasy REST implementation as default. If you package your own REST library to EAR/WAR file, you need to disable the default RESTeasy for your deployed library to work.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!