尽管我已经定义了下面添加的相关依赖项,但在我的应用程序调用Web服务时获取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>
P.S。 servlet容器为Apache Tomcat 9.0.4
。
P.S。 Java版本:9.0.1
。
答案 0 :(得分:5)
您似乎可能需要包含此依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.2.10</version>
</dependency>
或者(尚未检查但应该可以使用)您可能需要更改范围以导入POM依赖项。
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
答案 1 :(得分:3)
今天在雅加达时代,我需要以下两个依赖项:
<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,我认为所有这些实现都已迁移。可以,但是如果有人可以对此发表评论,我将不胜感激。
答案 2 :(得分:2)
似乎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来解决这个问题。
答案 3 :(得分:2)
@reta回答的第一部分对我有用。这些是我pom(Java 10)的相关依赖项:
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>2.3.1</version>
</dependency>
答案 4 :(得分:0)
从Java 8升级到Java 11时遇到同样的问题。
问题是behavior in ForkJoinPool的更改,该类加载器是jdk9系统类加载器,而不是主线程类加载器,它可以产生难以解决的ClassNotFound实例。
中有更好的解释和解决的方法