ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl
ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
我已经在 build.gradle 文件中添加了所有相关的依赖项。尽管如此,当我尝试 运行 Invoke SOAP 服务时仍出现以下错误。共享依赖项部分和错误详细信息。使用 Java 11. 互联网上已有很多答案,但其中 none 似乎有效。任何 Help/Suggestion 都将是可观的。
dependencies {
implementation 'org.codehaus.groovy:groovy-all:3.0.2'
implementation 'javax.jws:javax.jws-api:1.1'
cxfCodegen "jakarta.annotation:jakarta.annotation-api:1.3.5"
cxfCodegen "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"
cxfCodegen "jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
//implementation 'org.apache.cxf:cxf-spring-boot-starter-jaxws:3.5.0'
//implementation 'javax.xml.bind:jaxb-api:2.3.1'
compile 'javax.xml.ws:jaxws-api:2.3.1'
implementation 'com.sun.xml.messaging.saaj:saaj-impl:2.0.1'
implementation 'javax.xml.soap:javax.xml.soap-api:1.4.0'
implementation 'javax.xml.soap:saaj-api:1.3.5'
implementation 'com.sun.xml.ws:jaxws-rt:3.0.2'
implementation 'com.sun.xml.ws:rt:3.0.2'
implementation 'com.sun.xml.ws:jaxws-ri:3.0.2'
}
低于错误堆栈跟踪
Exception in thread "main" javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
at javax.xml.ws.spi.FactoryFinder.createException(FactoryFinder.java:61)
at javax.xml.ws.spi.FactoryFinder.createException(FactoryFinder.java:58)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:103)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:112)
at javax.xml.ws.spi.Provider.provider(Provider.java:96)
at javax.xml.ws.Service.<init>(Service.java:112)
at com.example.BLZService.<init>(BLZService.java:40)
at dummypackage.DummySOAPClient.main(DummySOAPClient.java:21)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at javax.xml.ws.spi.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:90)
at javax.xml.ws.spi.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:123)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:101)
... 5 more
A2A:
内部引用可能存在一些问题。
你可以按照这个答案:JDK 11; JAX-WS; Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
基本上答案是说您也可以尝试包含较旧的 rt 依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.3.1</version>
</dependency>
以上为maven pom xml格式
这里是 gradle 格式供您参考:
implementation 'com.sun.xml.ws:rt:2.3.1'
这很可能会解决您的问题。
编辑:
Post 在下面的评论中讨论:
有效的依赖项是:
implementation 'com.sun.xml.ws:jaxws-rt:2.3.2'
implementation 'com.sun.xml.ws:rt:2.3.2'
implementation 'com.sun.xml.ws:jaxws-ri:2.3.2'
在上面的依赖之后,有一个与
相关的错误
com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
可以使用兼容的 SAAJ 依赖项解决:
implementation 'com.sun.xml.messaging.saaj:saaj-impl:1.5.1'
此外,在添加 header 时,在添加上述 saaj 依赖项后向请求添加 header 时出现问题:
前一个代码:
SOAPMessageContext context;
SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPHeader header = envelope.addHeader();
有效的更新代码:
SOAPHeader header = envelope.getHeader();
请参阅下面 link 以获得 jaxws-rt 运行时依赖项:
https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt/2.3.2
我已经在 build.gradle 文件中添加了所有相关的依赖项。尽管如此,当我尝试 运行 Invoke SOAP 服务时仍出现以下错误。共享依赖项部分和错误详细信息。使用 Java 11. 互联网上已有很多答案,但其中 none 似乎有效。任何 Help/Suggestion 都将是可观的。
dependencies {
implementation 'org.codehaus.groovy:groovy-all:3.0.2'
implementation 'javax.jws:javax.jws-api:1.1'
cxfCodegen "jakarta.annotation:jakarta.annotation-api:1.3.5"
cxfCodegen "jakarta.xml.ws:jakarta.xml.ws-api:2.3.3"
cxfCodegen "jakarta.xml.bind:jakarta.xml.bind-api:2.3.3"
//implementation 'org.apache.cxf:cxf-spring-boot-starter-jaxws:3.5.0'
//implementation 'javax.xml.bind:jaxb-api:2.3.1'
compile 'javax.xml.ws:jaxws-api:2.3.1'
implementation 'com.sun.xml.messaging.saaj:saaj-impl:2.0.1'
implementation 'javax.xml.soap:javax.xml.soap-api:1.4.0'
implementation 'javax.xml.soap:saaj-api:1.3.5'
implementation 'com.sun.xml.ws:jaxws-rt:3.0.2'
implementation 'com.sun.xml.ws:rt:3.0.2'
implementation 'com.sun.xml.ws:jaxws-ri:3.0.2'
}
低于错误堆栈跟踪
Exception in thread "main" javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
at javax.xml.ws.spi.FactoryFinder.createException(FactoryFinder.java:61)
at javax.xml.ws.spi.FactoryFinder.createException(FactoryFinder.java:58)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:103)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:112)
at javax.xml.ws.spi.Provider.provider(Provider.java:96)
at javax.xml.ws.Service.<init>(Service.java:112)
at com.example.BLZService.<init>(BLZService.java:40)
at dummypackage.DummySOAPClient.main(DummySOAPClient.java:21)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at javax.xml.ws.spi.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:90)
at javax.xml.ws.spi.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:123)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:101)
... 5 more
A2A: 内部引用可能存在一些问题。
你可以按照这个答案:JDK 11; JAX-WS; Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
基本上答案是说您也可以尝试包含较旧的 rt 依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.3.1</version>
</dependency>
以上为maven pom xml格式
这里是 gradle 格式供您参考:
implementation 'com.sun.xml.ws:rt:2.3.1'
这很可能会解决您的问题。
编辑: Post 在下面的评论中讨论:
有效的依赖项是:
implementation 'com.sun.xml.ws:jaxws-rt:2.3.2'
implementation 'com.sun.xml.ws:rt:2.3.2'
implementation 'com.sun.xml.ws:jaxws-ri:2.3.2'
在上面的依赖之后,有一个与
相关的错误com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found
可以使用兼容的 SAAJ 依赖项解决:
implementation 'com.sun.xml.messaging.saaj:saaj-impl:1.5.1'
此外,在添加 header 时,在添加上述 saaj 依赖项后向请求添加 header 时出现问题:
前一个代码:
SOAPMessageContext context;
SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPHeader header = envelope.addHeader();
有效的更新代码:
SOAPHeader header = envelope.getHeader();
请参阅下面 link 以获得 jaxws-rt 运行时依赖项:
https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt/2.3.2