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

Java Hibernate反序列化失败求助:无法解析hibernate.cfg.xml

问题排查与解决方案

一、先解决JAXB实现缺失的问题

Java 9及以上版本已经把JAXB从JDK内置模块中移除了,而Hibernate解析XML配置时必须用到JAXB的实现类,所以直接在pom.xml里添加以下依赖即可:

<!-- JAXB核心API -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>3.0.2</version>
</dependency>
<!-- JAXB官方实现包 -->
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>3.0.2</version>
    <scope>runtime</scope>
</dependency>
<!-- Java 9+需要的激活模块 -->
<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>2.0.1</version>
</dependency>

如果你的项目用的是Java 8,只需要保留前两个依赖,版本换成2.3.3就行,Java 8自带激活模块,不用额外加。

二、彻底解决hibernate.cfg.xml的BOM问题

删完BOM后要确保文件是UTF-8无BOM编码:

  • 在IntelliJ里打开文件,点右下角的编码标识(比如显示UTF-8),选File Encodings,在弹出的窗口里把默认编码设为UTF-8,勾选Remove BOM后重新保存。
  • 也可以用记事本打开文件,选“另存为”,编码选UTF-8(别选带BOM的选项),覆盖原文件。

三、检查配置文件和依赖的正确性

1. hibernate.cfg.xml语法验证

确保标签闭合、属性正确,给你一个SQLite的基础配置模板,对照自己的文件检查:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- SQLite连接配置 -->
        <property name="hibernate.connection.driver_class">org.sqlite.JDBC</property>
        <property name="hibernate.connection.url">jdbc:sqlite:./test.db</property>
        <property name="hibernate.connection.username"></property>
        <property name="hibernate.connection.password"></property>
        
        <!-- Hibernate基础配置 -->
        <property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        
        <!-- 你的实体类映射 -->
        <mapping class="com.yourpackage.YourEntity"/>
    </session-factory>
</hibernate-configuration>

2. 必要依赖补充

pom.xml里必须有SQLite驱动和Hibernate核心依赖:

<!-- SQLite JDBC驱动 -->
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.45.2.0</version>
</dependency>
<!-- Hibernate核心包 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.4.4.Final</version>
</dependency>

如果用的是Hibernate 5.x版本,官方没有自带SQLite方言,得加第三方的:

<dependency>
    <groupId>net.kemitix</groupId>
    <artifactId>sqlite-dialect</artifactId>
    <version>0.1.1</version>
</dependency>

同时把配置里的hibernate.dialect改成net.kemitix.hibernate.dialect.SQLiteDialect。

四、最后验证项目运行配置

  • 点IntelliJ右侧Maven窗口的Reload All Maven Projects,确保所有依赖都加载成功。
  • 清理缓存:点File -> Invalidate Caches...,选Invalidate and Restart,重启后再运行项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:14