如何修复AndroidStudio中的“模块java.base不会“打开java.io”到未命名模块的“错误”?
背景
- 我在 android studio 开始了我的第一个项目,以熟悉 Android 编程。
- 我正在关注本教程,其中
- 我创建了一个新项目 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
这是我的配置设置:
- Android Gradle 插件版本:4.2.1
- Gradle 版本:7.0.1(更改为解决我在同步 Gradle 时遇到的另一个问题(“Gradle 同步失败:不支持的类文件主要版本 60”)和基于此论坛上的讨论,如下所述)
Andrey Dernov 评论 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或低于 16 版本的 JDK 来导入和构建项目(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 | Gradle | Gradle JVM 选项)。
- JDK:16.0.1
有什么建议或想法吗?
回答
我发现这个讨论与我的问题有关。但无法弄清楚如何在 Android Studio 中传递 JVM 参数。
但是,用 JDK 15 替换 JDK 16 后错误消失了。
- I also fix the issue by replacing jdk 16 to 1.8.
回答
我想我找到了解决方案。
如果您正在导入旧项目,您可能会遇到此错误。
基本上,您使用较低的 JDK 版本制作了旧项目,现在您的系统中当前安装了较高的 JDK 版本。
您应该避免使用更高的 JDK 版本来构建较旧的项目。
- 基本上下载 JDK 8 (1.8) 并安装它。
- 更改环境变量(将 JDK 8 路径写入环境变量)
- 然后更改您的项目结构并将 JDK 8 路径写入 JDK 位置。
- 使缓存无效并重新启动 android studio。
- 构建您的项目,它应该可以工作。
如果您收到以下错误:
Error:Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: 72477 > 65536
然后在 app.gradle 文件中添加以下依赖项:
// multidex
implementation 'com.android.support:multidex:1.0.3'
那么你需要在你的 app.gradle 文件中启用 multidex。
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.convenient.easymeasure"
minSdkVersion 19
targetSdkVersion 30
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
THE END
二维码