使用 ./gradlew 运行 执行任务 ':app:compileJava' 失败
Execution failed for task ':app:compileJava' with ./gradlew run
当我尝试在我的 gradle 项目中使用“./gradlew 运行”时,我收到此错误:
* 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”。我不确定如何解决这个问题,或者这是否是问题所在。任何帮助将不胜感激!
原来我的 Path 系统变量中有多个 java 路径。我删除了除正确的以外的所有内容,然后添加了一个 JAVA_HOME 系统变量,其值为 JDK (C:\Program Files\Java\jdk-"version").
使用 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'
我认为这个问题的根本原因是 Gradle 版本和正在使用的 JDK 版本不匹配。一应参考compatibility matrix.
例如,对于 Java 17 运行时,至少需要 Gradle 7.3.
我遇到了“IllegalAccessError”问题,就我而言,通过在 Eclipse Gradle (Buildship) 首选项中选择“特定 Gradle 版本”7.4 解决了这个问题。
确保 JDK 和 Gradle 版本的正确匹配是 environment-specific 但我认为一旦确定这一点,问题就会消失。
当我尝试在我的 gradle 项目中使用“./gradlew 运行”时,我收到此错误:
* 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”。我不确定如何解决这个问题,或者这是否是问题所在。任何帮助将不胜感激!
原来我的 Path 系统变量中有多个 java 路径。我删除了除正确的以外的所有内容,然后添加了一个 JAVA_HOME 系统变量,其值为 JDK (C:\Program Files\Java\jdk-"version").
使用 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'
我认为这个问题的根本原因是 Gradle 版本和正在使用的 JDK 版本不匹配。一应参考compatibility matrix.
例如,对于 Java 17 运行时,至少需要 Gradle 7.3.
我遇到了“IllegalAccessError”问题,就我而言,通过在 Eclipse Gradle (Buildship) 首选项中选择“特定 Gradle 版本”7.4 解决了这个问题。
确保 JDK 和 Gradle 版本的正确匹配是 environment-specific 但我认为一旦确定这一点,问题就会消失。