我最近下载了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库”已经在类路径中。
现在我在这里做错了什么?
答案 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/