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

Ant WsImport2执行报java.lang.NoClassDefFoundError问题求助

解决Ant wsimport任务的NoClassDefFoundError问题

从错误栈和你的配置来看,核心问题是JAXB与JAX-WS依赖版本不兼容,且缺失了关键的istack-commons-localization组件,导致Ant类加载器无法找到指定类。

问题根源拆解

你提到com.sun.istack.localization.LocalizableMessageFactory$ResourceBundleSupplier在jaxb-impl-2.2.6.jar中,但这个类在JAXB 2.3+版本中已经被拆分到独立的istack-commons-localization jar包中。而你使用的jaxws-tools-2.3.2.jar(JAX-WS 2.3.x)依赖的是这个独立jar的版本,和你当前的jaxb-impl-2.2.6.jar(JAXB 2.2.x)版本不兼容,类结构和路径不匹配,自然会出现找不到类的错误。

具体解决方案

1. 统一JAXB与JAX-WS的版本

JAXB和JAX-WS的版本必须保持对齐,避免跨版本依赖冲突:

  • 将jaxb-impl-2.2.6.jar替换为jaxb-impl-2.3.1.jar(和你已有的jaxb-api-2.3.1.jar版本匹配)
  • 将jaxb-xjc-2.2.7.jar替换为jaxb-xjc-2.3.1.jar
  • 可以选择将jaxws-tools-2.3.2.jar替换为jaxws-tools-2.3.1.jar,进一步保持版本完全一致

2. 添加缺失的依赖jar

将istack-commons-localization.jar(建议使用2.3.1版本,和JAXB版本匹配)添加到你的extraJars路径中。这个jar是JAX-WS 2.3.x工具类运行时的必需依赖,你之前的依赖列表里完全遗漏了它。

3. 验证类加载情况(可选)

如果还是有问题,可以在wsimport任务中添加verbose="true"参数,查看详细的类加载日志,确认新添加的jar是否被正确加载:

<wsimport wsdl="${build.dir}/src/${wsdl.file}" destdir="build" wsdlLocation="file:/WEB-INF/wsdl/${wsdl.file}" failonerror="true" verbose="true">
    <depends dir="${build.dir}/src" includes="*.xsd" />
    <produces dir="${lib.dir}" includes="${webservice.name}${webservice.component}WSBeans.jar"/>
</wsimport>

总结

本质是跨版本依赖冲突+缺失关键组件,通过统一JAXB/JAX-WS版本并补充istack-commons-localization.jar,就能解决这个NoClassDefFoundError问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:19:05