下载最新的 Android Studio(2023.12)
版本如下
运行后错误如下
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 @1130dfcd
百度google一圈发现没有什么线索,然后咨询gpt4得结果如下:
如果您在 Android Studio 中打开一个 GitHub 上的项目并遇到了“Unable to make field private
final java.lang.String java.io.File.path
accessible”这样的错误信息,这通常是因为您的项目中有代码尝试通过反射来访问 java.io.File
类的私有字段path
,但这在 Java 模块系统中是不被允许的。
您可以尝试以下步骤来解决此问题:
更新 Android Studio 和 Gradle: 确保您的 Android Studio 和 Gradle 插件是最新版本,因为最新版本的工具通常会更好地与 Java 模块系统兼容。
检查第三方库: 如果您的项目中使用了第三方库,确保它们都是最新版本。有时候,库的旧版本可能不兼容最新的 Java 平台更改。
Gradle 配置: 检查项目的 build.gradle
文件中是否有任何不兼容的配置或者插件,它可能导致了您的问题。尝试更新到最新的配置,并按照官方文档进行设置。
项目的 JDK 版本: 检查 Android Studio 使用的 JDK 版本是否与项目兼容。通常,Android 项目应该使用 Google 提供的 Android Studio 内置 JDK。
项目结构设置: 在 Android Studio 中,您可以通过以下步骤检查和更改项目的 JDK 版本:
打开“File”菜单选择“Project Structure…”在“Project”选项卡中,查看并设置“Project SDK”为正确的 JDK 版本如果上述步骤都不奏效,您可能需要考虑以下更具体的解决方案:
VM 选项: 如果问题是由于 Gradle 运行时的 Java 模块系统安全性造成的,您可以尝试修改 Gradle 的 JVM 参数。在项目的 gradle.properties
文件中添加以下行,以便在运行 Gradle 时添加必要的 JVM 参数:
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
代码更改: 如果问题出现在您控制的代码中,修改代码以避免反射访问 File
类的私有字段 path
。如果您无法修改代码(比如它是第三方库的一部分),您可能需要联系库的维护者以获取帮助或者查找替代的库。
如果仍然遇到问题,请提供更多的上下文信息,如错误发生时的具体情况,以及您正在使用的 Android Studio
的版本,这将有助于提供更具体的解决方案。
一条条来看,
1、更新 Android Studio 和 Gradle, 这个都是自动下的最新的,跳过
2、检查第三方库,显然我 clone 一个项目是没法去做代码改造的,不实际、跳过
3、Gradle 配置,这个粗略看一下,也不太好发现问题,跳过
4、5、项目的 JDK 版本,这个可以看看项目配置里的 Java 有没有设置对,clone 的项目是 jdk1.8 查看项目配置是一致的,跳过
目前没有发现能实质性推进的改动。往下看有 VM 选项修改,尝试在 gradle.properties 文件中添加如下代码
org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
再 clean、run,项目运行起来了!被迫使用 gradle 根本不想关心 why it works.
本文仅做记录,供他人参考,结案。