我使用
wsimport
命令 (java8) 从 wsdl 中提取了一个 jar。
现在,我尝试使用该 jar 来执行特定的 Web 服务,它向我显示此错误:
Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create Provider: class com.sun.xml.ws.spi.ProviderImpl cannot be cast to class javax.xml.ws.spi.Provider (com.sun.xml.ws.spi.ProviderImpl and javax.xml.ws.spi.Provider are in unnamed module of loader 'app')
at javax.xml.ws.spi.Provider.provider(Provider.java:88)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.Service01.<init>(Service01.java:42)
at com.kyc.MainApp.main(MainApp.java:45)
这里,这些是我在 pom.xml 中使用的依赖项:
<dependency>
<groupId>javax.xml.soap</groupId>
<artifactId>javax.xml.soap-api</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>jakarta.xml.soap</groupId>
<artifactId>jakarta.xml.soap-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>WSIMPOTJAR</groupId>
<artifactId>WSIMPOTJAR</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.5-b10</version>
</dependency>
PS:我尝试了这些解决方案,但没有一个有效:
jakarta.xml.ws.spi.Provider:com.sun.xml.ws.spi.ProviderImpl 不是子类型 JDK 11; JAX-WS;未找到提供程序 com.sun.xml.internal.ws.spi.ProviderImpl 尽管定义了依赖项,但仍获取 java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl
请从 pom.xml 中的
jaxws-api:2.1
中删除此依赖项。
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1</version>
</dependency>
这导致了问题。
原因: 此依赖项
jaxws-rt:4.0.0
具有此类 com.sun.xml.ws.spi.ProviderImpl
,它扩展了 jakarta.xml.ws.spi.Provider
依赖项中存在的 jakarta.xml.ws-api:4.0.0
。
您必须提供正确的
Provider
类,即 jakarta.xml.ws.spi.Provider
。