【发布时间】:2019-09-08 22:20:07
【问题描述】:
根据https://wiki.eclipse.org/New_Maven_Coordinates 和 Maven central 从 Java 8 迁移到 Java 11 并从 EE 切换到最新的 Jakarta 库时,我们在(仍然基于 SOAP)客户端应用程序中遇到以下运行时异常:
Exception in thread "main" javax.xml.ws.WebServiceException: Provider com.sun.xml.internal.ws.spi.ProviderImpl not found
at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:31)
at javax.xml.ws.spi.FactoryFinder$1.createException(FactoryFinder.java:28)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:73)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:82)
at javax.xml.ws.spi.Provider.provider(Provider.java:66)
at javax.xml.ws.Service.<init>(Service.java:82)
at [...]
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at javax.xml.ws.spi.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:60)
at javax.xml.ws.spi.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:93)
at javax.xml.ws.spi.ServiceLoaderUtil.newInstance(ServiceLoaderUtil.java:71)
... 5 more
Getting java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl despite the dependencies are defined 中描述的解决方案不起作用,也不使用 Jakarta。
如果我没记错的话,Jarkarta 库不应该包含“com.sun.xml”包或引用此类,但 javax.xml.ws.spi.Provider 显然仍然可以引用此类:
private static final String DEFAULT_JAXWSPROVIDER =
"com.sun"+".xml.internal.ws.spi.ProviderImpl";
那么,有谁知道 Jakarta 是否与包含 ProviderImpl 的缺失库等效,或者我可以如何解决 Jakarta 的问题?
提前致谢!
【问题讨论】:
标签: soap java-11 jakarta-ee