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

从Java 8升级到Java 11时遭遇NoClassDefFoundError: javax/activation/DataSource

Java 8升级到Java 11:wsimport运行NoClassDefFoundError问题排查

背景信息

  • 项目从Java 8迁移至Java 11,采用Ant构建脚本,原JDK自带的wsimport工具已被弃用且不再随JDK提供,尝试通过添加相关库到类路径+使用wsimport.sh脚本解决
  • 项目依赖外部提供的WSDL生成代码,该代码基于javax包,无法升级到新版jakarta包
  • 使用JAXWS-RI v2.3.1和javax.activation.jar v1.2.0,代码调用的是javax.xml.bind类而非org.glassfish.jaxb类

问题现象

运行wsimport.sh处理WSDL文件时,抛出如下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource
  • lib目录中已存在javax.activation.jar,且修改wsimport.sh中的java命令,添加了-cp ./lib/*参数,但问题依旧
  • 通过java -version确认使用Java 11 JDK,java -XshowSettings:properties显示javax.activation.jar已加载到类路径
  • 在Ant的build.xml中添加类路径条目时,出现failed to create task or type classpathentry错误
  • 当前通过命令行单独运行wsimport.sh调试,未解决问题

核心疑问

  • 看到一篇关于Java 11迁移的文章提到“如果编译通过但未调整运行时,会出现NoClassDefFoundError”,这里的“调整运行时”具体指什么?已确认使用Java 11 JDK,是否需要处理JRE?
  • 是否存在JAXB-RI与jaxws-tools.jar版本不匹配的问题?未找到对应的版本兼容性列表
  • 感觉遗漏了一些明显的关键点,Java并非强项,问题究竟出在哪里?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:52:33