运行Batch应用遇NoClassDefFoundError:缺失jakarta/xml/ws/WebServiceException类
解决
java.lang.NoClassDefFoundError: jakarta/xml/ws/WebServiceException问题 该错误是因为Batch应用缺少JAX-WS API相关依赖包,jakarta.xml.ws.WebServiceException属于Jakarta EE规范下的JAX-WS组件,需补充对应依赖即可修复连接异常。
具体解决方案
1. Maven/Gradle构建项目场景
直接在构建配置中添加依赖:
Maven
<dependency> <groupId>jakarta.xml.ws</groupId> <artifactId>jakarta.xml.ws-api</artifactId> <version>3.0.1</version> <!-- 可根据JDK版本选择兼容的稳定版 --> </dependency> <!-- 若使用Sun/Oracle的JAX-WS实现,需补充运行时依赖 --> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>3.0.1</version> <scope>runtime</scope> </dependency>
Gradle
implementation 'jakarta.xml.ws:jakarta.xml.ws-api:3.0.1' runtimeOnly 'com.sun.xml.ws:jaxws-rt:3.0.1'
2. 手动管理依赖场景
若无构建工具,需下载以下Jar包放入项目lib目录:
jakarta.xml.ws-api-3.0.1.jar(JAX-WS API定义)jaxws-rt-3.0.1.jar(JAX-WS运行时实现,包含编码、绑定等核心组件)- 配套依赖:
jakarta.xml.bind-api.jar、jaxb-impl.jar、jakarta.annotation-api.jar(JAX-WS依赖的其他Jakarta EE组件)
版本适配注意
- JDK 11+建议使用3.x版本的Jakarta EE依赖;
- JDK 8环境若出现该错误,需替换为
javax.xml.ws开头的旧版依赖(对应javax.xml.ws.WebServiceException),因JDK 8自带JAX-WS,但模块化项目或打包时排除JDK自带模块的情况仍需手动引入。
内容的提问来源于stack exchange,提问作者Shridhar
相关产品推荐
相关产品推荐

