解决 Java 9 中的 InaccessibleObjectException:无法使成员可访问
Java 9 中由于 Java 平台模块系统的严格封装而出现 InaccessibleObjectException ,仅在某些条件下授予访问权限,例如公共可见性和包可导出性。
原因和场景
此异常通常发生在以下情况:
解析案例 1:反射调用 JDK
As JDK 模块是不可变的,解决方案在于打开包进行反射的命令行标志。例如,要解决异常:
java --add-opens java.base/java.lang=ALL-UNNAMED
解决案例 2:对应用程序代码的反射
如果反射代码位于可编辑模块中,请考虑增强其模块描述符:
其他补救措施
Java 中仅在 9 版本中,您可以使用以下命令禁用封装保护:
java --permit-illegal-access
注意: 由于安全隐患,应谨慎使用此标志。有关模块配置和最佳实践的更多详细信息,请参阅链接的资源。
以上是如何解决Java 9的InaccessibleObjectException:反射和模块系统冲突?的详细内容。更多信息请关注PHP中文网其他相关文章!