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

JavaFX整合Hibernate持久化数据时触发Inaccessible Object Exception问题

Hibernate + JavaFX 持久化报错:Inaccessible Object Exception 解决

问题描述

用Hibernate+JavaFX开发保险管理程序,持久化SystemAdmin对象到PostgreSQL时触发Inaccessible Object Exception,无法构建SessionFactory,核心报错:

module org.example.insurancemanagementapplication does not "opens Entity" to unnamed module @7920ba90

相同代码在非JavaFX项目中正常运行,仅JavaFX项目出现此问题。

原因

JavaFX项目默认启用JPMS(Java平台模块系统),Hibernate这类ORM框架依赖反射访问实体类的私有成员,但模块系统默认封闭内部包。Hibernate属于未命名模块(unnamed module),无法访问你的模块中Entity包的类,导致权限错误;非JavaFX项目一般不启用模块系统,反射不受限制,所以正常运行。

解决方法

1. 修改module-info.java开放包权限

在项目的module-info.java中,添加对Hibernate模块的包开放声明,允许反射访问:

module org.example.insurancemanagementapplication {
    // 开放Entity包给Hibernate模块
    opens Entity to org.hibernate.orm.core;
    // 可选:对外暴露Entity包(如需其他模块访问)
    exports Entity;

    // 声明必要依赖
    requires javafx.controls;
    requires javafx.fxml;
    requires org.hibernate.orm.core;
    requires java.persistence;
    requires java.sql;
}

注意:旧版Hibernate可能需要写opens Entity to hibernate-core,根据实际依赖模块名调整。

2. 禁用模块系统(临时快速方案)

如果不需要模块系统,可以关闭JPMS:

  • IntelliJ IDEA:File > Project Structure > Modules,取消勾选Enable module-info.java
  • Maven/Gradle:移除module-info.java相关配置,让项目以传统类路径运行。

3. 使用Hibernate字节码增强(进阶方案)

通过编译期字节码增强生成访问器,规避运行时反射权限问题。Maven配置示例:

<build>
    <plugins>
        <plugin>
            <groupId>org.hibernate.orm.tooling</groupId>
            <artifactId>hibernate-enhance-maven-plugin</artifactId>
            <version>${hibernate.version}</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

此方案无需额外开放包权限,但需确保module-info.java正确声明依赖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:47:55