Java 升级Groovy 1.7-2.1不兼容性

Java 升级Groovy 1.7-2.1不兼容性,java,groovy,Java,Groovy,我正在从Groovy 1.76迁移到Groovy 2.1,在运行一些Java代码时遇到了问题 我的类路径上安装了Java7和Groovy2.1。Gradle正在运行,我的项目可以像以前一样运行所有的单元测试并成功执行 但是,我有一个java类,它加载一个groovy类并执行它(该类可以在常规gradle/groovy单元测试中正常执行),当我尝试在新环境中运行它时,它失败了,出现以下异常: Exception in thread "main" java.lang.NoClassDefFoundE

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

我的类路径上安装了Java7和Groovy2.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的更高版本重新构建的,但我的类已经针对Groovy的更高版本进行了构建(启动java代码的脚本实际上首先调用
gradle clean build
,以确保所有groovy类都得到正确编译)。也有一些jar依赖项,但没有一个是从groovy源代码(所有java jar)构建的


有人能告诉我问题出在哪里吗?我看不到任何代码仍然是针对1.7构建的。

我在升级时遇到了类似的问题,我从来没有创建一个新的
GROOVY\u HOME
来指向新版本的GROOVY…你这样做了吗,并且在你的路径中添加了
$GROOVY\u HOME/bin
在Groovy中内部使用er类来实现。不幸的是,这些类已经转移到另一个包中


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

是的,正如问题中提到的,我在其他几个答案中看到了这一点,但我在运行代码之前显式地重新构建了Groovy代码(Groovy-version说是2.1,Groovy\u home=Groovy 2.1,等等)Groovy安装的版本与Gradle版本无关。重要的是哪个版本的Groovy位于
编译
(或者,在较旧的Gradle版本中,
Groovy
)Gradle构建的配置。
Gradle dependencyInsight--configuration compile--dependency groovy
应该提供答案。是的,您需要在构建中指定正确的groovy版本。Gradle.Yep groovy_HOME设置为groovy 2.1的位置,groovy-version也表示其当前为2.1