0

我正在从 Groovy 1.76 迁移到 groovy 2.1,并且在运行一些 Java 代码时遇到问题。

我的类路径上安装了 java 7 和 Groovy 2.1。Gradle 正在运行,我的项目可以像以前一样运行它的所有单元测试并成功执行。

但是,我有一个 java 类可以加载其中一个 groovy 类并执行它(该类可以在常规 gradle/groovy 单元测试中正常执行),当我尝试在新环境中运行它时,它会失败并出现以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/transform/powerassert/ValueRecorder
    at com.covestor.glossary.meta.Entity$_Rel__clinit__closure3_closure4.doCall(Entity.groovy:500)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

我在其他问题/讨论中看到某些类已从 Groovy 1.7 中删除,因此一般建议似乎是确保针对更高版本的 groovy 重新构建这些类 - 但我的类已经针对后者构建版本(我的启动 java 代码的脚本实际上gradle clean build首先调用以确保正确编译所有 groovy 类)。还有一些 jar 依赖项,但它们都不是从 Groovy 源构建的(所有 java jars)。

谁能提出问题可能是什么?我看不到任何地方仍然有针对 1.7 构建的任何代码

4

2 回答 2

2

ValueRecorder 类在内部用于在 Groovy中实现电源断言功能。不幸的是,这些类已从 1.7移至另一个包1.8 。

您的错误意味着仍有一些 1.7 编译的 Groovy 代码。这就是 NoClassDefFoundError 的原因。

于 2013-05-08T07:17:08.797 回答
0

升级时我遇到了类似的问题,我从来没有创建一个新版GROOVY_HOME本来指向新版本的 groovy ......你是否这样做并添加$GROOVY_HOME/bin到你的路径中?

于 2013-05-07T18:20:12.310 回答