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

OpenJDK下Hibernate报错:无法访问私有最终字段

解决Eclipse中Hibernate控制台配置的InaccessibleObjectException错误

这个问题我之前帮同事排查过,本质是Java 9及以上版本的模块系统(JPMS)默认限制了对JDK内部API的访问,而你用的Hibernate工具版本可能还在调用这些被封装的内部类。下面是几个亲测有效的解决办法:

方法一:给Eclipse添加JVM参数开放模块权限

这是最快的临时解决方案,通过JVM参数让Java开放对应的内部包给未命名模块:

  • 打开Eclipse,点击顶部菜单栏的 Window → Preferences
  • 依次展开 Java → Installed JREs
  • 选中你当前项目使用的JRE/JDK,点击右侧的「Edit」按钮
  • 在「Default VM arguments」输入框里添加以下参数:
    --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
    
    如果后续还有类似的模块访问错误,可以追加对应的参数,比如常见的:
    --add-opens java.base/java.lang=ALL-UNNAMED
    --add-opens java.base/java.util=ALL-UNNAMED
    
  • 点击「Finish」保存,重启Eclipse后再尝试创建Hibernate控制台配置

方法二:降级到Java 8(最省心的长期方案,如果项目允许)

Java 8没有模块系统的限制,Hibernate工具对Java 8的兼容性完美:

  • 在Eclipse的「Installed JREs」中添加Java 8的JDK/JRE
  • 把项目的编译级别、运行环境都切换到Java 8
  • 重启Eclipse后重新配置Hibernate控制台,大概率不会再出问题

方法三:升级Hibernate工具到最新兼容版本

有些旧版Hibernate工具对Java 9+的模块系统支持不足,去Eclipse Marketplace搜索「Hibernate Tools」,更新到最新版后再尝试配置——新版本通常已经修复了这类模块访问的兼容性问题

额外说明:这个错误的核心是JDK的模块封装机制,传统类路径下的代码(未命名模块)默认无法访问被模块封装的内部API。--add-opens是临时绕过限制的办法,长期来看还是建议使用适配Java 9+的Hibernate工具版本,或者根据项目需求调整Java版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:37