[Unable to make field private final java.lang.String java.io.File.path accessible: module java.base

添加

org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误是由于Java 9及以上版本的模块化系统引起的。在Java 9中,模块化系统被引入以提供更好的代码隔离和模块化。在模块化系统中,模块可以选择性地将其包暴露给其他模块。 在你提到的错误中,"Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io"",它表示你的代码试图访问`java.io.File`类的私有字段`path`,但是由于`java.base`模块没有将`java.io`包打开(opens)给其他模块,所以无法访问该字段。 要解决这个问题,你可以使用反射来访问私有字段。通过使用反射,你可以绕过访问限制并访问私有字段。下面是一个使用反射访问私有字段的示例代码: ```java import java.lang.reflect.Field; import java.io.File; public class Main { public static void main(String[] args) throws Exception { File file = new File("path/to/file"); Field pathField = File.class.getDeclaredField("path"); pathField.setAccessible(true); String pathValue = (String) pathField.get(file); System.out.println("File path: " + pathValue); } } ``` 上述代码中,我们使用`getDeclaredField`方法获取`File`类的私有字段`path`,然后通过`setAccessible(true)`方法将其设置为可访问。最后,我们使用`get`方法获取字段的值。 请注意,使用反射来访问私有字段可能会破坏封装性,并且不推荐在正常的应用程序中频繁使用。只有在特殊情况下,比如需要进行调试或者实现某些特定的功能时,才应该使用反射来访问私有字段。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值