IntelliJ首次构建报InaccessibleObjectException错误第二次正常如何解决
错误原因
该报错是Java 9及以上版本引入的模块系统权限限制导致,IDEA内部通过反射调用java.util.ResourceBundle.setParent()方法时,未获取到java.base模块下java.util包的访问权限。首次构建会触发严格的权限校验抛出异常,第二次构建时缓存绕过了该校验步骤,因此可以正常运行。
解决方案
方案1:修改IDEA自定义VM配置
- 打开IDEA顶部菜单栏
帮助->编辑自定义VM选项 - 在打开的
.vmoptions配置文件末尾追加两行参数:
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
- 保存配置后完全关闭并重启IDEA,重新构建即可解决问题。
方案2:升级IDEA版本或降低JDK版本
- 优先升级IntelliJ IDEA到2022.1及以上版本,高版本已经默认适配了高版本JDK的模块权限规则,不会触发该异常。
- 如果暂时无法升级IDEA,可将项目JDK版本切换为Java 8,Java 8无模块系统限制,可完全规避该问题。
方案3:清理构建缓存
- 打开IDEA顶部菜单栏
文件->无效缓存 - 勾选
清除文件系统缓存和本地历史,点击无效并重启 - 重启后重新构建项目,即可修复缓存异常导致的偶发权限报错。
内容的提问来源于stack exchange,提问作者JJoye
相关产品推荐
相关产品推荐

