2012-07-31 15 views
12

He descargado recientemente Eclipse Juno e instalado el último complemento de Groovy.Excepción java.lang.IncompatibleClassChangeError al ejecutar Groovy en Eclipse Juno

Ahora, así es como se ve mi archivo Groovy.

package groovy_support 

class TimePass { 
static void main(def args){ 
    println "Hello World" 
} 
} 

Cuando corro esto desde bien mi versión anterior del eclipse (añil) o desde la línea de comandos, que se ejecuta. En Eclipse Juno, sin embargo, se queja con la siguiente excepción en la consola de Eclipse.

Caught: java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected 
java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected 

Tenga en cuenta que "Groovy Libraries" ya están en classpath.

¿Qué estoy haciendo mal aquí?

+0

¿Qué versión de Groovy estás usando? ¿Estás asegurándote de que la versión de Groovy con la que estás compilando es la misma que la versión en la que la estás ejecutando? –

+0

Estoy usando Groovy 2.0.1 en la línea de comandos. En Eclipse Juno, mi plugin muestra groovy-all-2.0 y asm 4.0. En Eclipse Indigo, mi complemento muestra lo mismo. :) – user898535

+0

Supongo que está compilando con una versión anterior de groovy, pero corriendo con una versión posterior. ¿Qué versión ves cuando vas a Preferencias -> Groovy -> Compilador? –

Respuesta

14

¿Estás en los últimos tarros groovy/dependent? .

El java.lang.IncompatibleClassChangeError ocurre debido a problemas de compatibilidad con la sala trasera. El código del cliente necesita ser recompilado para resolverlo.

El error específico que está viendo es porque org.objectweb.asm.ClassVisitor es Interface en asm 3.2 y Class en asm 4.0 en adelante.

+0

obtengo el mismo error no en mi máquina local cuando lo construyo en jenkins. excluí el asm 3.2 de mi POM, pero sigo teniendo ese error cuando jenkins intenta ejecutar el compilador maven una vez que termina de ejecutar las pruebas de integración. – Venki

+0

Eso es correcto Ajay. Como se mencionó anteriormente, ese parece ser el problema. :) Y funcionó según la sugerencia. Gracias. :) – user898535

+0

Genial. Considere aceptar la respuesta haciendo clic en el botón de marcación cerca de la respuesta –

2

Tuve el mismo problema al usar Spring y Groovy en un módulo. Spring en 3.1.2 todavía usa ASM más viejo, Groovy usa el que tiene la clase. Si bien es posible ajustar algunas exclusiones, apuesto a que no siempre es una opción.

Después de leer this thread decidí hacer con groovy-all.jar en lugar de la lista de todas las librerías necesarias de Groovy. Si esa es una opción para usted, podría ser una manera fácil de evitar cualquier otro problema.

Cuestiones relacionadas