简体   繁体   English

Spring Boot 2.2 ClassNotFoundException com.sun.xml.ws.spi.ProviderImpl 使用 fat jar 从 Java 8 升级到 11

[英]Spring Boot 2.2 ClassNotFoundException com.sun.xml.ws.spi.ProviderImpl upgrading from Java 8 to 11 using fat jar

I'm upgrading from Java 8 to Java 11.我正在从 Java 8 升级到 Java 11。
I'm using javax.ws packages so I had to include dependencies removed in Java 11.我正在使用 javax.ws 包,所以我必须包含在 Java 11 中删除的依赖项。

        <dependency>
            <groupId>jakarta.xml.ws</groupId>
            <artifactId>jakarta.xml.ws-api</artifactId>
            <version>2.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.3.3-b01</version>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>rt</artifactId>
            <version>2.3.3-b01</version>
        </dependency>

My Spring Boot 2.2.2 application works perfect running like mvn spring-boot:run .我的 Spring Boot 2.2.2 应用程序可以像mvn spring-boot:run一样完美mvn spring-boot:run

When running with java -jar app.jar gives a ClassNotFoundException while searching for com.sun.xml.ws.spi.ProviderImpl当使用 java -jar app.jar 运行时,在搜索 com.sun.xml.ws.spi.ProviderImpl 时会给出ClassNotFoundException
I checked the rt- version .jar is in the final fat jar.我检查了 rt- version .jar 是否在最终的胖罐中。
And checked the class is in the jar.并检查了课程是否在罐子里。

在此处输入图片说明

Does spring boot remove classes from ClassLoader when running in java -jar mode?java -jar模式下运行时,sp​​ring boot 是否会从 ClassLoader 中删除类?

The real problem was a change of behavior as of Java9.真正的问题是 Java9 的行为改变。
ForkJoinPools now don't have main thread classloader, they have system classloader instead. ForkJoinPools 现在没有主线程类加载器,而是有系统类加载器。

But Java 11 allows more params in ForkJoinPool constructor so we can create our own pools with our desired classloader.但是 Java 11 允许在 ForkJoinPool 构造函数中使用更多参数,因此我们可以使用所需的类加载器创建自己的池。
The solution is posted in another answer.解决方案发布在另一个答案中。 https://stackoverflow.com/a/59444016/878015 https://stackoverflow.com/a/59444016/878015

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ClassNotFoundException:com.sun.xml.internal.ws.spi.ProviderImpl - ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl 获取 java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl 尽管定义了依赖项 - Getting java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl despite the dependencies are defined JDK 11; JAX-WS; 未找到提供程序 com.sun.xml.internal.ws.spi.ProviderImpl - JDK 11; JAX-WS; Provider com.sun.xml.internal.ws.spi.ProviderImpl not found javax.xml.ws.WebServiceException:找不到提供者com.sun.xml.internal.ws.spi.ProviderImpl - javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found Spring Jersey 2.7:java.lang.ClassNotFoundException:com.sun.jersey.spi.spring.container.servlet.SpringServlet - Spring Jersey 2.7: java.lang.ClassNotFoundException: com.sun.jersey.spi.spring.container.servlet.SpringServlet java.lang.ClassNotFoundException: com.sun.org.apache.xml.internal.resolver.CatalogManager Java 11 - java.lang.ClassNotFoundException: com.sun.org.apache.xml.internal.resolver.CatalogManager Java 11 春季启动com.sun.jersey.spi.container.servlet.ServletContainer - spring boot com.sun.jersey.spi.container.servlet.ServletContainer Spring 启动 - Java FAT Jar - NoClassFoundError - Spring Boot - Java FAT Jar - NoClassFoundError 升级 Axis2 库后出现 ClassNotFoundException:com.sun.ws.rs.ext.RuntimeDelegateImpl - Getting ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl after upgrading Axis2 library 在Weblogic上部署Web服务时出错:无法转换为com.sun.xml.ws.spi.db.DatabindingProvider - Error deploying webservice on weblogic: cannot cast to com.sun.xml.ws.spi.db.DatabindingProvider
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM