Gradle 错误:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

Posted

技术标签:

【中文标题】Gradle 错误:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper【英文标题】:Gradle error: Could not initialize class org.codehaus.groovy.runtime.InvokerHelper 【发布时间】:2020-08-03 08:06:21 【问题描述】:

我需要在 Gradle 中查看我的依赖项以解决多个 SLF4J 绑定的问题。 但是,当我运行“gradle dependencies”时出现错误:

无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

在堆栈溢出中的类似问题android Studio Could not initialize class org.codehaus.groovy.runtime.InvokerHelper 建议

    安装java jdk-14 升级到 gradle 6.3 版

我在 IntelliJ 的 2 个地方将 jdk 更改为 14:

    文件 -> 项目结构 -> 项目 -> 项目 SDK 首选项 -> Gradle -> Gradle JVM

我尝试从命令行更新 gradle: 'gradle wrapper --gradle-version 6.3' 并得到同样的错误:

无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

然后我将文件“gradle-wrapper.properties”中的字段“distributionUrl”更改为“gradle-6.3”,按照此处https://github.com/gradle/gradle/issues/10248 的说明。

我尝试了 jdk 和 gradle 版本的各种组合,但似乎没有任何效果。

【问题讨论】:

gradlew -version 在命令行上显示什么? gradlew -version 给出-bash: gradlew: command not found。但是,当前目录中有 gradlew 和 gradlew.bat 文件。 gradle -version 给出 `Gradle 6.0.1 ... Kotlin: 1.3.50 Groovy: 2.5.8 Ant: 1.10.7 JVM: 14 OS: Mac OS X 10.15.4 x86_64。 试试./gradlew -version。这是安卓应用吗?是否是公开可用的应用,所以我可以在本地试用? ./gradlew -version 下载了https://services.gradle.org/distributions/gradle-4.0-bin.zip 然后给了FAILURE: Build failed with an exception. Could not determine java version from '14' 代码在我的github页面上:github.com/jspinak/brobotREST 【参考方案1】:

所以从你的仓库中,如果你有这样的 gradle-wrapper.properties:

➜ cat gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

在第一次编译时,Gradle 会告诉你:

  build file '/Users/tim/Code/Java/brobotREST/build.gradle': 36:
     all buildscript  blocks must appear before any plugins  blocks in the script

因此,如果您将 buildscript 部分移到 build.gradle 文件的顶部,一切似乎都可以工作

我得到:

➜ ./gradlew -version

------------------------------------------------------------
Gradle 6.3
------------------------------------------------------------

Build time:   2020-03-24 19:52:07 UTC
Revision:     bacd40b727b0130eeac8855ae3f9fd9a0b207c60

Kotlin:       1.3.70
Groovy:       2.5.10
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          14 (Azul Systems, Inc. 14+36)
OS:           Mac OS X 10.15.4 x86_64

【讨论】:

感谢蒂姆帮助我,我真的很感激 :) 我进行了更改,但没有任何改变。同样奇怪的是,我从未收到您所做的buildscript 错误消息。该程序总是为我成功编译,即使在 build.gradle 文件的底部有buildscript。它给出了几个警告:annotationProcessor intersects with a source root,但可以编译。按照你的指示,我…… ... 将buildscript 部分放在顶部并尝试再次运行./gradlew -version,但结果相同。该构建还编译并提供相同的输出。然后我删除了整个buildscript 部分(反正我还没有设置本地存储库)。结果相同:/ @JoshuaSpinak 我向您的项目发送了一个 PR,以将包装器属性和 jar 添加到存储库中...这在我的机器上运行...检查您正在运行 ./gradlew tasks./gradlew -version 【参考方案2】:

在 Windows 10 上遇到了类似的问题,由 java 版本问题引起。 在 build.gradle 中设置 java 源代码兼容性标志;对于 java 1.8 这是

sourceCompatibility = '1.8'

然后检查系统版本是否相同

java -version

【讨论】:

【参考方案3】:

我在 macOS 上遇到了类似的问题。看来,这是 IntelliJ IDEA 和 Gradle 版本差异的问题。 我在 /gradle/gradle-wrapper.properties 中调整了 Gradle 版本。 就我而言,我设置了: distributionUrl=https://services.gradle.org/distribution/gradle-6.6.1-bin.zip

现在它可以工作了。 另请参阅 Gradle:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper

【讨论】:

以上是关于Gradle 错误:无法初始化类 org.codehaus.groovy.runtime.InvokerHelper的主要内容,如果未能解决你的问题,请参考以下文章

> 无法初始化类 com.android.repository.api.RepoManager

在 build.gradle.kts 中添加后无法导入类

Firebase crashlytics 错误:无法加载类“org.gradle.api.tasks.TaskProvider”

Gradle 0.9.+/0.9.2 错误:无法加载类“com.android.builder.testing.api.DeviceProvider”

如何正确地配置Gradle版本

更新 gradle 包装器后无法解析类 MavenDeployment