web-dev-qa-db-ja.com

依存関係が定義されているにもかかわらず、Java.lang.ClassNotFoundException:com.Sun.xml.internal.ws.spi.ProviderImplを取得する

それにもかかわらず、以下に追加したように関連する依存関係を定義し、Java.lang.ClassNotFoundException: com.Sun.xml.internal.ws.spi.ProviderImplアプリがWebサービスを呼び出すときの例外。

<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>

pSサーブレットコンテナはApache Tomcat 9.0.4

pS Javaバージョン:9.0.1

12
talha06

この依存関係を含める必要があるようです:

<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>
4
reta

@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>
1

クラスcom.Sun.xml.internal.ws.spi.ProviderImpljdk-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を使用して問題を解決できるかどうか疑問に思います。

1
Roshane Perera

Java 11 from Java 8.にアップグレードすると、同じ問題が発生します。

問題は ForkJoinPoolの動作 の変更でした。このクラスローダーは、メインスレッドクラスローダーではなく、jdk9システムクラスローダーのものであり、解決が難しいClassNotFound例外を生成する可能性があります。

それはこの答えでよりよく説明して解決しました https://stackoverflow.com/a/59444016/878015

0
David Canós