Hibernate初始化异常:hibernate.cfg.xml解编失败与JAXB依赖缺失求助
解决方案:Hibernate配置解析报错(JAXB缺失)
问题根本原因
Java 9及以后版本中,JAXB(Java Architecture for XML Binding)模块被从JDK默认类库中移除,而旧版本Hibernate依赖JAXB解析XML配置文件(如hibernate.cfg.xml、.hbm.xml映射文件),因此会抛出ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory异常。
具体解决步骤
步骤1:确认JDK版本
打开终端执行java -version,如果是Java 9+,必须手动添加JAXB依赖。步骤2:添加JAXB依赖
方式1:Maven项目(推荐)
在
pom.xml中加入以下依赖:<!-- JAXB API --> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <!-- JAXB 实现 --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.1</version> <scope>runtime</scope> </dependency> <!-- JAXB 核心模块 --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <!-- 激活JAXB的依赖 --> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>方式2:普通Java项目(Eclipse)
手动下载以下JAR包,添加到项目的
Build Path中:- jaxb-api-2.3.1.jar
- jaxb-impl-2.3.1.jar
- jaxb-core-2.3.0.1.jar
- activation-1.1.1.jar
操作路径:右键项目 →Build Path→Add External Archives,选择上述JAR包。
步骤3:(可选)升级Hibernate版本
如果使用Hibernate 5.3及以下版本,建议升级到Hibernate 5.4+,新版本已适配Java 9+模块化架构,无需手动添加JAXB依赖(部分场景仍需,但兼容性更好)。步骤4:验证配置文件路径
确保hibernate.cfg.xml放在src/main/resources(Maven)或src目录下,HibernateUtil中加载配置的代码正确:Configuration configuration = new Configuration().configure(); // 若文件不在默认位置,可指定路径 // Configuration configuration = new Configuration().configure("path/to/hibernate.cfg.xml");
内容的提问来源于stack exchange,提问作者harshita aggarwal
相关产品推荐
相关产品推荐

