2010-08-18 17 views
5

Distribuisco una guerra fatta con "guerra dei graal" a un server di jetty.Grails IncompatibleClassChangeError

Per quanto posso determinare, Grails si basa su Sun JDK 1.6.0_17-b04 e il jetty su Sun JDK 1.6.0.16 (entrambi su 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) 

In che modo è possibile risolvere o eseguire il debug di questo problema?

risposta

11

Eseguire grails clean prima di eseguire grails war.

+0

clean ha aiutato anche me. era un conflitto di versione nel mio caso. successo solo durante il debug. –

+0

ogni volta che l'ho visto, l'ho riparato anche attraverso i grails –

0

Probabilmente stai incontrando un conflitto JAR. Vale a dire che il tuo ambiente di compilazione sta utilizzando un jar e il runtime (Jetty) sta utilizzando un jar in conflitto. Questo accadeva spesso con vari stack di analisi XML.

Prova a guardare i barattoli usati dal molo e confrontali con quelli del tuo progetto.

3

Secondo another post, codice Groovy che usa le eccezioni che è stato compilato con una versione di Java prima del 7 non è compatibile con Java 7.

Maggiori informazioni si possono trovare here.