我正在尝试使用 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
从 open jdk 17 降级到 11 对我有用。
通过从现有源重新创建项目并将
.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
我花了最多 3 个工作日,找到了一个简单的解决方案。前往
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
我决定用这个升级 gradle 版本:
./gradlew wrapper --gradle-version 7.5
我遇到了同样的错误。为了解决这个问题,我最终在从命令行运行 gradle 之前设置了 JAVA_HOME 环境变量,并将其添加到我的路径中。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
openjdk-11 对我来说工作得很好,但你想确保你的 JAVA_HOME 环境变量在设置之前指向一个实际位置。这可能因您的操作系统而异。
我必须将我的 gradle 文件升级到 7.3.1 并在 android 目录的 gradle.properties 中添加这一行
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
Java 17 支持需要 gradle 升级
你需要将你的java版本降级到JDK 11版本。 对于 Mac OS 用户,请按照以下步骤操作:
/usr/libexec/java_home -V
出口 JAVA_HOME=/Library/Java/JavaVirtualMachines/<
>/Contents/Home
java-版本
我有同样的问题。 当我在 intellij 终端运行时 ./gradlew build war 这个异常发生了。
我看到问题是终端java版本。在终端中是 17,我的应用程序在 11 中运行。
我通过 intellij 解决了创建 war 文件的问题,但是我的终端中缺少一些需要修复的环境配置。
我用的是jdk 11.0.13版本,效果不错
这是我的 ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home
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