Gradle问题解决 Unable to make field private final java.lang.String java.io.File.path accessible: module

下载最新的 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 模块系统中是不被允许的。

您可以尝试以下步骤来解决此问题:

  1. 更新 Android Studio 和 Gradle: 确保您的 Android Studio 和 Gradle 插件是最新版本,因为最新版本的工具通常会更好地与 Java 模块系统兼容。

  2. 检查第三方库: 如果您的项目中使用了第三方库,确保它们都是最新版本。有时候,库的旧版本可能不兼容最新的 Java 平台更改。

  3. Gradle 配置: 检查项目的 build.gradle 文件中是否有任何不兼容的配置或者插件,它可能导致了您的问题。尝试更新到最新的配置,并按照官方文档进行设置。

  4. 项目的 JDK 版本: 检查 Android Studio 使用的 JDK 版本是否与项目兼容。通常,Android 项目应该使用 Google 提供的 Android Studio 内置 JDK。

  5. 项目结构设置: 在 Android Studio 中,您可以通过以下步骤检查和更改项目的 JDK 版本:

    • 打开“File”菜单
    • 选择“Project Structure…”
    • 在“Project”选项卡中,查看并设置“Project SDK”为正确的 JDK 版本

如果上述步骤都不奏效,您可能需要考虑以下更具体的解决方案:

  1. VM 选项: 如果问题是由于 Gradle 运行时的 Java 模块系统安全性造成的,您可以尝试修改 Gradle 的 JVM 参数。在项目的 gradle.properties 文件中添加以下行,以便在运行 Gradle 时添加必要的 JVM 参数:

    org.gradle.jvmargs=--add-opens java.base/java.io=ALL-UNNAMED
    
  2. 代码更改: 如果问题出现在您控制的代码中,修改代码以避免反射访问 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.
本文仅做记录,供他人参考,结案。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>