如何修复 Android Studio 中的“module java.base does not “opens java.io” to unnamed module”错误?

新手上路,请多包涵

背景

  1. 我在 android studio 中开始了我的第一个项目,以熟悉 Android 编程。
  2. 我正在关注本 教程,其中
  • 我创建了一个新项目Empty Activity,没有任何改变
  • 它应该模拟一个显示“Hello World”消息的简单应用程序

问题描述 但是每次我尝试运行和构建(我现在想要模拟器)时,我都会收到以下错误消息。

 Unable to make field private final java.lang.String java.io.File.path accessible:
Unable to make field private final java.lang.String java.io.File.path
accessible: module java.base does not "opens java.io" to unnamed module @42760a00

_这是我的配置设置_:

  1. Android Gradle 插件版本:4.2.1
  2. Gradle 版本:7.0.1(已更改以解决我在同步 Gradle 时遇到的另一个问题(“Gradle 同步失败:不支持的类文件主要版本 60”)以及基于此 论坛 的讨论,如下所述)

Andrey Dernov 评论 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或 JDK 低于 16 的版本导入和构建项目(设置(macOS 上的首选项)|构建、执行、部署|构建工具|Gradle |Gradle JVM 选项)。

  1. JDK:16.0.1

有什么建议或想法吗?

原文由 Ashkanxy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 10.6k
2 个回答

我发现这种 讨论 与我的问题有点相关。但无法弄清楚如何在 Android studio 中传递 JVM 参数。

但是,用 JDK 15 替换 JDK 16 后错误消失了。

原文由 Ashkanxy 发布,翻译遵循 CC BY-SA 4.0 许可协议

GitHub 的解决方案对我有用。无需降级 Java JDK。刚刚将 gradle-wrapper 属性中的 gradle 版本更改为 7.1.1(6.x 不支持 java 16),并在 gradle.properties 中添加以下行:

 org.gradle.jvmargs=-Xmx1536M \
--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

原文由 lortschi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题