Java.lang.IllegalAccessError: 类 org.gradle.internal.compiler.java.ClassNameCollector 无法访问类 com.sun.tools.javac.code.Symbol$

27

我试图使用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

3
我遇到了与Java版本openjdk 17.0.1 2021-10-19相同的问题。将版本降级至openjdk 11.0.13 2021-10-19 LTS后,问题得到解决。 - mty
10个回答

37

我花了三个工作日,最终找到了一个简单的解决方案。请前往android/gradle.properties,将org.gradle.jvmargs=-Xmx1536M改为

org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED

似乎在这里无法工作。 - George Pligoropoulos
它对我有效。完整配置:org.gradle.jvmargs=-Xmx4096m --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED - sodino
这对我有用,但你能分享一些检查细节的资源吗? - felecian aidan
2
它在Flamigo 2022上运行。 - dotrinh PM
这对我有用,我从JDK 20降级到了17。 - AegisX1
它也帮助了我,非常感谢。 - aida

24

将Open JDK 17降级至11对我而言有效。


16

通过使用现有的源代码重新创建项目并将 .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

我检查了https://gradle.org/releases/,找到了最新版本,它对我有效。 - NBTX

9
我使用以下方法解决了Gradle版本升级问题:
./gradlew wrapper --gradle-version 7.5

3
我也遇到了同样的错误。为了解决它,我最终在命令行中运行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

您需要将Java版本降级为JDK 11版本。

对于Mac OS用户,请按照以下步骤操作:

  1. 检查已安装的Java版本,看看是否安装了jdk11,如果没有,请先安装。

/usr/libexec/java_home -V

  1. 打开vim ~/.zshrc
  2. 添加下面这行代码,注意正确更新您的JDK名称

export JAVA_HOME=/Library/Java/JavaVirtualMachines/<<Your_JDK_11_version>>/Contents/Home

  1. 重新启动终端
  2. 检查Java版本

java -version


2

我不得不升级我的gradle文件到7.3.1,并在android目录下的gradle.properties中添加以下行:org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED

升级gradle是为了支持Java 17。


1

对于Flutter运行,执行此命令可能有助于解决您的问题

rm -r ~/.pub-cache
rm -r ./pubspec.lock
flutter clean
flutter pub get
flutter pub cache clean
flutter pub cache repair
flutter precache
dart pub upgrade
flutter pub run build_runner build --delete-conflicting-outputs

1

我使用了 jdk 11.0.13 版本,它运行良好。

这是我的 ~/.bash_profile 文件。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home

0

我遇到了同样的问题。 当我在Intellij终端中运行./gradlew build war时,出现了这个异常。

我发现问题出在终端Java版本上。终端中的版本是17,而我的应用程序正在运行11。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接