2012-05-06 25 views
17

No consigo averiguar por qué me aparece este error. Intenté limpiar bibliotecas que son redundantes, etc.java.lang.IncompatibleClassChangeError: Implementando la clase Mongo

consigo el error cuando trato de hacer:

mongo = new Mongo(host, port); 

Lo curioso es que puedo correr cualquier unidad de pruebas que realicé en IDE (IntelliJ), pero cuando trato de ejecutar a través de Tomcat I conseguir esto:

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.<init>(MongoOptions.java:29) 
     at com.mongodb.Mongo.<init>(Mongo.java:148) 
     at com.mongodb.Mongo.<init>(Mongo.java:137) 
     at com.sfatandrei.db.MongoManager.<init>(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 

estoy usando JDK 7, Tomcat 7.0. 27, maven 3.0.3.

+1

En general, ese error se debe a la compilación con un conjunto de archivos JAR y ejecutándose contra un conjunto diferente. Podría ser su clase o una de las clases en uno de los JAR que usa. Desafortunadamente, no parece decirnos qué clase tomó el error. –

+0

@HotLicks, en realidad, dice qué clase tomó el error: 'en com.mongodb.MongoOptions.reset (MongoOptions.java:47) ' – sfat

+1

No, ahí es donde se produjo el error. Pero el error ocurrió en la clase que se está cargando, sea lo que fuere. Si puede examinar el código en ese punto, es posible que pueda descifrar qué clase se estaba cargando. –

Respuesta

19

Parece un error de nivel de código de bytes. Tal vez tenga dos versiones de la misma biblioteca en su servidor Tomcat.

Ver: What causes java.lang.IncompatibleClassChangeError?

+2

parece que 'mongo-java-driver' tiene dentro de una clase que usa org.bson y yo agregué' bson' dependency y eso estaba interfiriendo – sfat

1

Si obtiene este problema bajo JBoss, es muy probablemente debido al hecho de que JBoss lía aplicación RESTeasy RESTO como predeterminado. Si empaqueta su propia biblioteca REST en el archivo EAR/WAR, necesita desactivar el RESTeasy predeterminado para que funcione la biblioteca implementada.

Cuestiones relacionadas