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

Java项目从JDK11升级至JDK17后集成测试遇InaccessibleObjectException报错求助

解决JDK17迁移中java.lang.reflect的InaccessibleObjectException错误

你的错误明确指向java.base模块未将java.lang.reflect包开放给未命名模块,而你当前的argLine配置里正好缺少了这个包的--add-opens参数,这就是测试仍失败的核心原因。

修正后的JVM参数配置

把--add-opens java.base/java.lang.reflect=ALL-UNNAMED加入到你的argLine中,完整配置如下:

<argLine>
    --illegal-access=permit
    --add-opens java.base/java.lang=ALL-UNNAMED
    --add-opens java.base/sun.reflect=ALL-UNNAMED
    --add-opens java.base/java.util=ALL-UNNAMED
    --add-opens java.base/java.lang.reflect=ALL-UNNAMED
</argLine>

额外注意事项

  • 确保参数正确传递:如果你用Maven,要确认该配置是在failsafe-plugin的configuration节点下(集成测试由Failsafe插件负责,而非单元测试用的Surefire),避免参数被错误应用到单元测试进程。
  • 长远优化建议:--illegal-access=permit在JDK17中已被标记为废弃,后续版本会移除。建议逐步替换为精确的--add-opens参数,只开放测试代码实际依赖的包,减少不必要的安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:25:23