使用 ./gradlew 运行任务 ':app:compileJava' 执行失败

Posted

技术标签:

【中文标题】使用 ./gradlew 运行任务 \':app:compileJava\' 执行失败【英文标题】:Execution failed for task ':app:compileJava' with ./gradlew run使用 ./gradlew 运行任务 ':app:compileJava' 执行失败 【发布时间】:2021-07-13 04:46:53 【问题描述】:

当我尝试在我的 gradle 项目中使用“./gradlew run”时,我收到了这个错误:

* What went wrong:
Execution failed for task ':app:compileJava'.
> java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x1fa4cfc5) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x1fa4cfc5

我尝试了多个不同的项目,但仍然无法正常工作。我相信这与 gradle 期待不同版本的 Java 有关,因为我使用的是 java 16,当我检查“gradle -v”时它显示“JVM:15.0.2”。我不确定如何解决这个问题,或者这是否是问题所在。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

原来我的 Path 系统变量中有多个 java 路径。我删除了除正确的之外的所有变量,然后添加了一个 JAVA_HOME 系统变量,其值为 JDK 的正确路径(C:\Program Files\Java\jdk-“version”)。

【讨论】:

【参考方案2】:

使用 JDK 17 我也收到了类似的错误消息

java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x1fa4cfc5) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0x1fa4cfc5

我能找到的唯一解决方案是创建一个环境变量

JDK_JAVA_OPTIONS='--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED'

【讨论】:

以上是关于使用 ./gradlew 运行任务 ':app:compileJava' 执行失败的主要内容,如果未能解决你的问题,请参考以下文章

'gradlew' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

Android Gradle 插件自定义 Gradle 任务 ② ( 在 Terminal 面板中执行 gradlew task 命令显示所有任务 | 命令行输出所有任务 | 单独执行指定任务 )

Android Gradle 插件自定义 Gradle 任务 ② ( 在 Terminal 面板中执行 gradlew task 命令显示所有任务 | 命令行输出所有任务 | 单独执行指定任务 )

如何使用 gradlew 命令分别执行 Espresso 多个测试类

gradlew 命令

gradlew:权限被拒绝