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

迁移至Jakarta EE 10后出现jakarta.xml.ws.spi.Provider查找异常求助

解决Jakarta EE 10中jakarta.xml.ws.spi.Provider找不到的问题

你遇到的jakarta.xml.ws.WebServiceException: Error while searching for service [jakarta.xml.ws.spi.Provider]错误,核心原因是Jakarta EE 10不再将JAX-WS(Jakarta XML Web Services)作为平台默认内置组件——Java EE 8中它是标准平台的一部分,迁移后需要额外处理实现类的加载逻辑。结合你已添加的依赖,给出以下解决步骤:

1. 确认运行时依赖加载正常

你添加的jaxws-rt依赖设置了<scope>runtime</scope>,需确保构建工具在打包部署时,该依赖被正确放入应用classpath:

  • Maven打包war包时,runtime依赖默认会进入WEB-INF/lib,若有自定义打包配置需检查是否遗漏;
  • IDE运行时,确认该依赖已加入到项目的运行时类路径中。

2. 显式指定Provider实现类

SPI机制可能无法自动扫描到jaxws-rt中的实现类,可通过两种方式手动指定:

方式一:代码中设置系统属性

在初始化Web服务客户端前添加:

System.setProperty("jakarta.xml.ws.spi.Provider", "com.sun.xml.ws.spi.ProviderImpl");

方式二:添加SPI配置文件

在项目src/main/resources/META-INF/services目录下创建文件jakarta.xml.ws.spi.Provider,文件内容仅一行:

com.sun.xml.ws.spi.ProviderImpl

该文件会告知Java SPI机制要加载的具体实现类。

3. 处理应用服务器兼容性冲突

若使用Jakarta EE 10兼容的应用服务器(如WildFly 27+、Payara 6+),服务器可能自带JAX-WS实现,会和你引入的jaxws-rt产生冲突:

  • WildFly:可通过jboss-deployment-structure.xml排除服务器自带的JAX-WS模块,或直接使用服务器提供的实现(需确保服务器已启用JAX-WS扩展);
  • Payara:检查域配置,确认是否禁用了内置JAX-WS,或调整依赖优先级。

4. 模块化项目(JPMS)的特殊处理

如果项目使用Java模块系统,需在module-info.java中添加:

requires jakarta.xml.ws.api;
requires com.sun.xml.ws.jaxws.runtime;

同时确保jaxws-rt的模块被正确识别,避免模块路径扫描不到的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:30:59