You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenJDK17环境运行Java容器抛出InaccessibleObjectException异常求助

异常成因

Java 9引入的JPMS(Java平台模块系统)收紧了对内部API的反射访问权限,你当前使用的Weld 3.1.0版本发布时间早于OpenJDK 17,未适配高版本JDK的模块访问规则:Weld启动过程中需要通过反射调用java.lang.ClassLoader的非公开方法defineClass来动态生成类,而OpenJDK 17默认禁止类路径下的未命名模块反射访问java.base模块的java.lang包非公开成员,因此直接抛出InaccessibleObjectException。

解决方案
  • 【推荐方案】升级Weld到兼容OpenJDK 17的版本
    升级Weld到3.1.9及以上的3.x稳定版,或者4.x、5.x的正式版本,高版本Weld已经原生适配了JPMS的访问限制,无需额外配置即可正常启动。
  • 【临时兼容方案】添加JVM启动参数开放权限
    如果暂时无法升级依赖,可以在启动Java程序时添加如下JVM参数,手动开放对应包的反射访问权限:
--add-opens java.base/java.lang=ALL-UNNAMED

如果后续运行仍触发其他模块的访问报错,可以对应补充其他--add-opens配置即可。

  • 【模块化项目适配】如果你的项目本身使用了JPMS模块化开发(存在module-info.java文件),可以直接在模块描述文件中添加对应的开放声明与Weld依赖声明即可。

内容的提问来源于stack exchange,提问作者Raphael Giusti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:00