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

如何解决Java 15运行时的javax.xml.bind.JAXBException类未找到错误

解决Java 15运行Hibernate时JAXB缺失的问题

问题原因

Java 9及以后版本中,JAXB(Java Architecture for XML Binding)被移出JDK核心模块。仅添加jaxb-api依赖只提供了接口定义,缺少运行时实现类,因此出现NoClassDefFoundError。

有效解决方法

方法一:添加完整JAXB依赖包

在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.1</version>
</dependency>
<!-- JAXB 依赖的激活框架 -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

添加后执行mvn clean install更新依赖,重新运行代码即可。

方法二:JVM参数临时引入模块(仅适用于Java 9-11)

若不想修改依赖,可在运行程序时添加JVM参数强制引入模块,但Java 12及以后java.xml.bind模块已被完全移除,因此仅作为临时方案:

--add-modules java.xml.bind

额外说明

如果使用Hibernate 5.4及以上版本,建议迁移到Jakarta EE版本的JAXB依赖(jakarta.xml.bind:jakarta.xml.bind-api),适配Java 11+长期支持版本,避免依赖旧的javax命名空间包。

内容的提问来源于stack exchange,提问作者Gökhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:00:54