2010-08-18 9 views
5

Despliegue una guerra hecha con "guerra de griales" a un servidor de embarcadero.Grails IncompatibleClassChangeError

Por lo que puedo determinar, Grails se compila con Sun JDK 1.6.0_17-b04 y jetty se ejecuta en Sun JDK 1.6.0.16 (ambos en linux).

2010-08-18 07:33:47.018:WARN::Nested in org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException:  
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.lang.ClassLoader do not match. Expected 3 but got 2: 
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.lang.ClassLoader do not match. Expected 3 but got 2 
at grails.plugin.scopedproxy.AlwaysReloadableSmartClassLoader.<init>(AlwaysReloadableSmartClassLoader.groovy:28) 
at grails.plugin.scopedproxy.ScopedProxyUtils.wrapInSmartClassLoader(ScopedProxyUtils.groovy:154) 

¿Cómo se puede resolver o depurar este problema?

Respuesta

11

Ejecute grails clean antes de ejecutar grails war.

+0

clean me ayudó también. fue un conflicto de versión en mi caso. sucedido solo cuando se depura. –

+0

cada vez que he visto esto, lo he arreglado a través de grails clean también –

0

Probablemente se encuentre con un conflicto JAR. A saber, su entorno de compilación está utilizando un jar, y el tiempo de ejecución (Jetty) está utilizando un jar conflictivo. Esto solía ocurrir a menudo con varias pilas de análisis XML.

Intenta mirar los frascos usados ​​por embarcadero y compáralos con los de tu proyecto.

3

Según another post, código maravilloso que utiliza excepciones que se compiló con una versión de Java antes de la 7 no es compatible con Java 7.

Más información se puede encontrar here.