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

03-08 5722阅读 0评论

下载最新的 Android Studio(2023.12)

版本如下

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

运行后错误如下

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.

本文仅做记录,供他人参考,结案。


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,5722人围观)

还没有评论,来说两句吧...

目录[+]