首页 > Java > java教程 > Java 9 的 InaccessibleObjectException:如何解决'无法使 {Member} 可访问”?

Java 9 的 InaccessibleObjectException:如何解决'无法使 {Member} 可访问”?

DDD
发布: 2025-01-03 07:58:39
原创
809 人浏览过

Java 9's InaccessibleObjectException: How to Resolve

克服 Java 9 的 InaccessibleObjectException:“无法使 {Member} 可访问”

理解问题

Java 9引入了Platform Module System,增强了封装性通过限制对某些元素的访问。当尝试绕过这些限制时,将引发 InaccessibleObjectException。错误消息指定正在访问的成员、限制访问的模块以及尝试访问该成员的模块。

解决异常

解决方案因具体情况而异导致问题的场景。

1.反射调用 JDK

问题: 库或框架使用反射来访问 JDK 模块中的元素。

解决方案: 使用用于打开特定包进行反射的命令行标志。

java --add-opens {jdk-module}/{package}={accessing-module}
登录后复制

对于例如:

java --add-opens java.base/java.lang=ALL-UNNAMED
登录后复制

2。应用程序代码的反射

问题:反射用于访问应用程序模块内的元素。

解决方案:修改应用程序用于打开包或模块的模块描述符

选项:

  • 导出包:

    • 导出{package}
  • 将包导出到特定模块:

    • 将 {package} 导出到{accessing-module}
  • 打开包:

    • 打开 {package}
  • 打开包到特定module:

    • 打开 {package} 到 {accessing-module}
  • 打开整个模块:

    • 打开模块 {要打开的模块} {...}

适当的选择取决于所需的访问级别和可见性。

以上是Java 9 的 InaccessibleObjectException:如何解决'无法使 {Member} 可访问”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板