それにもかかわらず、以下に追加したように関連する依存関係を定義し、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
。
この依存関係を含める必要があるようです:
<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>
@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>
クラス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を使用して問題を解決できるかどうか疑問に思います。
Java 11 from Java 8.にアップグレードすると、同じ問題が発生します。
問題は ForkJoinPoolの動作 の変更でした。このクラスローダーは、メインスレッドクラスローダーではなく、jdk9システムクラスローダーのものであり、解決が難しいClassNotFound例外を生成する可能性があります。
それはこの答えでよりよく説明して解決しました https://stackoverflow.com/a/59444016/878015