Java11环境编译JAX-WS报错:找不到jakarta.xml.bind模块如何解决
问题原因
- 你使用的JAX-WS 3.0.1版本属于Jakarta EE 9规范体系,该版本起JAXB(Jakarta XML Bind)作为独立组件不会被JAX-WS依赖自动传递引入,你当前的pom配置中缺少JAXB的编译期依赖。
- Java 11已经将JAXB、JAX-WS等组件从标准JDK中移除,必须手动引入第三方实现才可以正常使用相关功能。
- 由于编译期模块路径中缺少JAXB的API包,Java模块系统无法识别
jakarta.xml.bind模块,因此抛出对应报错。
解决方案
1. 补充pom.xml中的JAXB依赖
在原有JAX-WS依赖的基础上,新增JAXB的API和实现依赖:
<dependencies> <!-- 原有JAX-WS依赖保留 --> <dependency> <groupId>jakarta.xml.ws</groupId> <artifactId>jakarta.xml.ws-api</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>3.0.1</version> <scope>runtime</scope> </dependency> <!-- 新增JAXB依赖 --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>3.0.1</version> <scope>runtime</scope> </dependency> </dependencies>
2. 完善module-info.java配置
如果你的项目中需要使用JAX-WS的相关API,建议在模块声明中补充JAX-WS的依赖引入:
module test.jakarta { requires jakarta.xml.bind; requires jakarta.xml.ws; }
3. 重新构建项目
执行以下命令清理旧的编译产物并重新编译:
mvn clean compile
内容的提问来源于stack exchange,提问作者Carmelo Quílez
相关产品推荐
相关产品推荐

