java.lang.IllegalAccessError:类 org.gradle.internal.compiler.java.ClassNameCollector 无法访问类 com.sun.to

Posted

技术标签:

【中文标题】java.lang.IllegalAccessError:类 org.gradle.internal.compiler.java.ClassNameCollector 无法访问类 com.sun.tools.javac.code.Symbol$【英文标题】:java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector cannot access class com.sun.tools.javac.code.Symbol$ 【发布时间】:2022-01-22 03:47:03 【问题描述】:

我正在尝试使用 Java SE 11 和 Gradle 7.0 构建应用程序,并且它是使用 IDE 构建的,但是当我尝试使用终端构建它时出现此错误。我该如何解决它。

java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x1d7a8227) 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 @0x1d7a8227

【问题讨论】:

我在 Java 版本openjdk 17.0.1 2021-10-19 上遇到了同样的情况。降级到版本 openjdk 11.0.13 2021-10-19 LTS 为我修复了它。 【参考方案1】:

我也有同样的问题。 当我在 intellij 终端运行时 ./gradlew build war 发生了这个异常。

我看到问题是终端java版本。在终端是 17,我的应用程序在 11 中运行。

我通过 intellij 解决了创建 war 文件的问题,但是我的终端中缺少一些环境配置需要修复。

【讨论】:

是的,我遇到了同样的问题。刚刚在我的终端中更改了 Java 版本,一切正常。【参考方案2】:

我遇到了同样的错误。为了解决这个问题,我最终在从命令行运行 gradle 之前设置了 JAVA_HOME 环境变量,并将其添加到我的路径中。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home 
export PATH=$JAVA_HOME/bin:$PATH

openjdk-11 对我来说工作得很好,但是你要确保你的 JAVA_HOME 环境变量在设置之前指向一个实际的位置。这可能因您的操作系统而异。

【讨论】:

【参考方案3】:

通过从现有源重新创建项目并将.gradle-wrapper.properties 版本更新到 7.3.2 来解决此问题

位置:gradle/wrapper/gradle-wrapper.properties

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

【讨论】:

以上是关于java.lang.IllegalAccessError:类 org.gradle.internal.compiler.java.ClassNameCollector 无法访问类 com.sun.to的主要内容,如果未能解决你的问题,请参考以下文章