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

升级至Jakarta和Java 17后出现org.jvnet.jaxb.lang.Equals类找不到异常

JAXB升级至Jakarta/Java17后出现org.jvnet.jaxb.lang.Equals找不到的问题

我正尝试将应用从javax/java8版本升级至jakarta/java17版本,升级过程中同步更新了jaxb相关包。我的build.gradle文件包含以下依赖:

implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.2'
implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.5'
implementation 'org.jvnet.jaxb:jaxb-plugins-runtime:4.0.8'
implementation 'org.jvnet.jaxb:jaxb-plugins-tools:4.0.8'
implementation 'org.jvnet.jaxb:jaxb-plugins:4.0.8'

应用初始化时出现如下错误:

Caused by: java.lang.NoClassDefFoundError: org/jvnet/jaxb/lang/Equals
Caused by: java.lang.ClassNotFoundException: org.jvnet.jaxb.lang.Equals

为何已引入所有相关依赖,仍会出现org.jvnet.jaxb.lang.Equals类找不到的问题?


问题原因与解决方案

org.jvnet.jaxb.lang.Equals类并不在你当前引入的jaxb-plugins相关依赖中,它属于jaxb-basics组件。jaxb-plugins 4.x版本基于Jakarta EE 9+重构时,将原本内置的基础工具类(包括Lang包下的Equals、HashCode等)拆分到了独立的jaxb-basics模块中,因此仅引入jaxb-plugins系列依赖会缺失这些核心基础类。

解决步骤

  1. 添加jaxb-basics-runtime依赖到build.gradle:
implementation 'org.jvnet.jaxb:jaxb-basics-runtime:4.0.8'

这个依赖包含运行时所需的org.jvnet.jaxb.lang下的所有类。

  1. 若你的项目用到了JAXB代码生成插件(比如在编译期生成Java类),还需要添加jaxb-basics依赖:
implementation 'org.jvnet.jaxb:jaxb-basics:4.0.8'

注意事项

确保所有jaxb-basics相关依赖的版本与你当前使用的jaxb-plugins版本(4.0.8)保持一致,避免因版本不匹配导致的其他类缺失或兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:25:05