获取java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl,尽管定义了依赖项
尽管我已经定义了下面添加的相关依赖项,但当我的应用程序调用web服务时,会得到获取java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl,尽管定义了依赖项,java,maven,tomcat,jax-ws,webservice-client,Java,Maven,Tomcat,Jax Ws,Webservice Client,尽管我已经定义了下面添加的相关依赖项,但当我的应用程序调用web服务时,会得到java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl异常 <dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2.
java.lang.ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl
异常
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
<type>pom</type>
</dependency>
javax.xml.ws
JAXWSAPI
2.2.10
com.sun.xml.ws
jaxws-rt
2.2.10
聚甲醛
p、 servlet容器是ApacheTomcat9.0.4
p、 美国Java版本:
9.0.1
似乎类com.sun.xml.internal.ws.spi.ProviderImpl
在jdk-9
jshell> Class.forName("com.sun.xml.internal.ws.spi.ProviderImpl")
| java.lang.ClassNotFoundException thrown: com.sun.xml.internal.ws.spi.ProviderImpl
| at URLClassLoader.findClass (URLClassLoader.java:466)
| at DefaultLoaderDelegate$RemoteClassLoader.findClass (DefaultLoaderDelegate.java:66)
| at ClassLoader.loadClass (ClassLoader.java:543)
| at ClassLoader.loadClass (ClassLoader.java:476)
| at Class.forName0 (Native Method)
| at Class.forName (Class.java:292)
| at (#1:1)
它在jdk-8中可用,我想知道如果可能的话,您是否可以使用jdk-8来解决这个问题。似乎您可能需要包含此依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.2.10</version>
</dependency>
com.sun.xml.ws
rt
2.2.10
或者(尚未检查,但应该可以工作),您可能需要更改POM依赖项的导入范围
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
com.sun.xml.ws
jaxws-rt
2.2.10
聚甲醛
进口
@reta回答的第一部分对我有用。以下是我的pom(Java 10)中的相关依赖项:
javax.xml.ws
JAXWSAPI
2.3.1
com.sun.xml.ws
rt
2.3.1
我从Java 8升级到Java 11时遇到同样的问题
问题是类加载器的改变,它是jdk9系统的类加载器,而不是主线程类加载器,它会产生难以解决的ClassNotFound异常
这个答案更好地解释了这一点今天在雅加达的时代,我需要以下两个依赖项:
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>
jakarta.xml.ws
jakarta.xml.ws-api
2.3.3
com.sun.xml.ws
jaxws-rt
2.3.3
我觉得很奇怪的一件事是,第二个依赖项不是来自雅加达,我以为所有这些实现都被迁移了。这是可行的,但如果有人能对此发表评论,我将不胜感激。ty感谢您的回答。人!这两个依赖项是不同的。一个是
rt
,另一个是jaxws-rt
。添加此依赖项后,如果出现SOAPVersion异常,请将该版本升级到最新版本。在撰写本文时,最新版本isrt
is 2.3.1降级到JDK8不是一个解决方案
<dependency>
<groupId>jakarta.xml.ws</groupId>
<artifactId>jakarta.xml.ws-api</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>