如何解决Android Studio中'module java.base does not "opens java.io" to unnamed module'报错
解决方案
根因说明
该报错由JDK 16新增的强模块封装限制导致,你当前使用的Android Gradle Plugin 4.2.1版本未适配JDK 16的模块访问规则,无法访问java.io.File的私有成员字段,触发权限拦截。
推荐方案(稳定性最高)
Android官方当前推荐使用JDK 11作为Android开发的默认JDK版本,长期支持且兼容性最优,降级JDK操作步骤如下:
- 打开Android Studio设置页:
- Windows/Linux:顶部菜单栏选择
File > Settings - macOS:顶部菜单栏选择
Android Studio > Preferences
- Windows/Linux:顶部菜单栏选择
- 依次进入目录:构建、执行、部署 > 构建工具 > Gradle
- 找到「Gradle JVM」配置项,下拉选择JDK 11版本,若本地未安装可直接选择内置的下载选项完成安装
- 点击「应用」保存设置后,重新同步Gradle并构建项目即可
如果降级JDK后出现之前的Unsupported class file major version 60报错,可以将Gradle版本回退到和AGP 4.2.1匹配的官方推荐版本6.7.1:
修改项目根目录下gradle/wrapper/gradle-wrapper.properties文件中的distributionUrl参数为:distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
修改后重新同步Gradle即可。
备选方案(保留JDK 16时使用)
若你需要保留JDK 16版本,可以通过添加Gradle运行参数临时适配模块访问规则,操作步骤如下:
- 打开项目根目录下的
gradle.properties文件 - 新增如下配置:
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
- 保存文件后重新同步Gradle即可完成构建
注意该方案属于临时适配手段,后续升级Android Gradle Plugin到7.0+版本后建议移除该配置。
内容的提问来源于stack exchange,提问作者Ashkanxy
相关产品推荐
相关产品推荐

