在Eclipse Juno中运行Groovy时出现异常java.lang.IncompatibleClassChangeError

时间:2012-07-31 11:06:46

标签: eclipse groovy eclipse-juno

我最近下载了Eclipse Juno并安装了最新的Groovy插件。

现在,这是我的Groovy文件的样子。

package groovy_support

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

当我从我之前的eclipse版本(indigo)或命令行运行它时,它会运行。然而,在Eclipse Juno上,它抱怨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

请注意,“Groovy库”已经在类路径中。

现在我在这里做错了什么?

3 个答案:

答案 0 :(得分:16)

你是否在最新的groovy /依赖罐子?

java.lang.IncompatibleClassChangeError由于后方兼容性问题而发生。 需要重新编译客户端代码才能解决它。

您看到的具体错误是因为org.objectweb.asm.ClassVisitor在asm 3.2中是Interface,在asm 4.0之后是Class

答案 1 :(得分:2)

我在一个模块中使用Spring和Groovy时遇到了同样的问题。 3.1.2中的Spring仍然使用较旧的ASM,Groovy使用类中的一个。虽然可以调整一些排除,但我敢打赌它并不总是一种选择。

在阅读this thread后,我决定使用groovy-all.jar而不是所有Groovy所需库的列表。如果这是您的选择,那么如何避免任何进一步的问题可能很简单。

答案 2 :(得分:0)

我为以下错误尝试了许多解决方案。 java.lang.IncompatibleClassChangeError:找到了接口org.objectweb.asm.MethodVisitor,但是期望使用类。只有一个可行的方法可以将常规杂物排除在保证范围之外。请参阅下面的链接以获取完整的解决方法。

https://blog.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1/