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

Posted

技术标签:

【中文标题】在 Eclipse Juno 中运行 Groovy 时出现异常 java.lang.IncompatibleClassChangeError【英文标题】:Exception java.lang.IncompatibleClassChangeError while running Groovy in Eclipse Juno 【发布时间】:2012-07-29 03:19:01 【问题描述】:

我最近下载了 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 库”已经在类路径中。

现在我做错了什么?

【问题讨论】:

你使用的是什么版本的 groovy?您是否确保您正在编译的 groovy 版本与您正在运行的版本相同? 我在命令行上使用 groovy 2.0.1。在 Eclipse Juno 中,我的插件显示 groovy-all-2.0 和 asm 4.0。在 Eclipse Indigo 中,我的插件显示相同。 :) 我的猜测是您正在使用早期版本的 groovy 进行编译,但使用更高版本运行。当您转到 Preferences -> Groovy -> Compiler 时,您会看到什么版本? 您不妨在下面接受 Ajay 的回答,因为他的建议使我发现了您所看到的可能问题。 【参考方案1】:

针对以下错误,我尝试了许多解决方案。 java.lang.IncompatibleClassChangeError:找到接口 org.objectweb.asm.MethodVisitor,但需要类。只有一个工作是从放心的依赖中排除常规的工件。请参阅以下链接了解完整的解决方法。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

你在使用最新的 groovy/dependent jars 吗? .

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

您看到的具体错误是因为 org.objectweb.asm.ClassVisitor 在 asm 3.2 中是 Interface,在 asm 4.0 及更高版本中是 Class。

【讨论】:

当我在 jenkins 上构建它时,我在本地机器上没有遇到同样的错误。我从我的 POM 中排除了 asm 3.2,但是当 jenkins 在完成运行集成测试后尝试运行 maven 编译器时仍然会出现该错误。 没错,阿杰。如前所述,这似乎确实是问题所在。 :) 它按照建议工作。谢谢。 :) 太棒了。考虑通过单击答案附近的勾选按钮来接受答案

以上是关于在 Eclipse Juno 中运行 Groovy 时出现异常 java.lang.IncompatibleClassChangeError的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse juno 在 Suse 64 位中出现错误

使用 IBM Worklight 6 (juno eclipse) 安装 jazz 4.0.2 插件会导致 Worklight 中的功能退化

为啥我不能在 Eclipse Juno 中保存文件?

在 Eclipse-CDT Juno 中禁用 EGit

Eclipse Juno 4.2 的 Swing 插件 [重复]

Tomcat 7 中的 Eclipse 4.2(Juno)“无法使用所选类型创建服务器”