使用Jakarta XML 3.0+依赖创建XML文件时出现NoClassDefFoundError错误
你遇到的java.lang.NoClassDefFoundError: jakarta.activation.DataSource错误是因为Jakarta XML Binding 3.0及以上版本已将Activation组件从JAXB主包中拆分,不再作为传递依赖自动引入,需要手动添加对应依赖。
解决方案
在你的pom.xml中新增匹配当前JAXB版本的Jakarta Activation依赖即可,修改后的完整依赖配置如下:
<!-- JAXB API --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>3.0.1</version> </dependency> <!-- JAXB RI, Jakarta XML Binding --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>3.0.1</version> <scope>runtime</scope> </dependency> <!-- 新增:Jakarta Activation API --> <dependency> <groupId>jakarta.activation</groupId> <artifactId>jakarta.activation-api</artifactId> <version>2.0.1</version> </dependency> <!-- 可选:如果仅添加API后仍报错,补充运行时实现 --> <dependency> <groupId>com.sun.activation</groupId> <artifactId>jakarta.activation</artifactId> <version>2.0.1</version> <scope>runtime</scope> </dependency>
注意事项
- 请彻底移除项目中残留的javax.xml.bind、javax.activation系列旧依赖,避免不同版本的类冲突
- 如果后续升级JAXB到4.x版本,需要同步将Jakarta Activation的版本升级到2.1.x及以上匹配
内容的提问来源于stack exchange,提问作者Pavan Jadda
相关产品推荐
相关产品推荐

