JDK 11; JAX-WS;找不到提供程序 com.sun.xml.internal.ws.spi.ProviderImpl

新手上路,请多包涵

我需要访问 JDK 11 中的遗留 SOAP Web 服务。但我遇到“找不到 ProviderImpl”的问题。

JDK 11 实现是:zulu11.2.3-jdk11.0.1-win_x64。

在我的 build.gradle 中,我有以下依赖项:

 compile group: 'com.sun.xml.ws', name: 'jaxws-rt', version: '2.3.1', ext: 'pom', { force = true }

我的 WAR 文件的 WEB-INF/lib 包含 在此处输入图像描述

我看到:

 javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
    at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:61) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:58) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:103) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:112) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.Provider.provider(Provider.java:96) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.Service.<init>(Service.java:112) ~[jaxws-api-2.3.1.jar:na]

按照 https://github.com/javaee/metro-jax-ws/issues/1247 我尝试设置:

-Djavax.xml.ws.spi.Provider=com.sun.xml.ws.spi.ProviderImpl

但我仍然得到:

 javax.xml.ws.WebServiceException: Provider com.sun.xml.ws.spi.ProviderImpl not found
    at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:61) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:58) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:103) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.FactoryFinder.fromSystemProperty(FactoryFinder.java:122) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:99) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.Provider.provider(Provider.java:96) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.Service.<init>(Service.java:112) ~[jaxws-api-2.3.1.jar:na]
    ...
Caused by: java.lang.ClassNotFoundException: com.sun.xml.ws.spi.ProviderImpl
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
    at javax.xml.ws.spi.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:90) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:123) ~[jaxws-api-2.3.1.jar:na]
    at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:101) ~[jaxws-api-2.3.1.jar:na]
    ... 22 common frames omitted

我已验证 com.sun.xml.ws.spi.ProviderImpl 可用:

在此处输入图像描述

是否有“外面”可用的此组合的已知工作示例?

感激地接受了想法/建议。

原文由 Bob Brown 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
1 个回答

我在 java11 中调用 soap-webservices 时遇到了完全相同的错误。通过向 pom.xml 添加以下依赖项,我终于让它在我的测试项目中工作

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>rt</artifactId>
    <version>2.3.1</version>
</dependency>

由于我的生产环境尚未转换为 Maven,因此我发现我需要类路径中的这些 jar 文件:

 jaxb-runtime-2.3.1.jar
jaxws-api-2.3.1.jar
javax.xml.soap-api-1.4.0.jar
rt-2.3.1.jar
streambuffer-1.5.3.jar
policy-2.7.5.jar
stax-ex-1.8.jar
javax.jws-api-1.1.jar
saaj-impl-1.5.0.jar
gmbal-api-only-3.1.0-b001.jar

原文由 runholen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题