无法为 SOAP 创建消息工厂:无法创建 SAAJ 元工厂提供程序 com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl 未找到

问题描述 投票:0回答:2

我们的产品基于 eclipse RCP 和 OSGi 框架构建。 我已将代码从 JDK1.8 升级到 JDK11。在代码中,我使用

MessageFactory.newInstance().createMessage()
创建 SOAP 消息,但在 JDK11 上运行时出现以下情况。

javax.xml.soap.SOAPException: Unable to create message factory for SOAP: Unable to create SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found

我知道 JDK11 没有 JDK1.8 早期就有的包

com.sun.xml.messaging.saaj.soap
。因此,我添加了
saaj-impl-1.5.1
的依赖项及其所需的传递依赖项。 我还尝试添加系统属性来指定
MessageFactory
的实现,但仍然遇到相同的错误。也尝试过较低版本的
saaj-impl
,但错误仍然存在。

我已经尝试了打包为 JAR 后无法创建 SAAJ 元工厂无法创建 SAAJ 元工厂:未找到提供程序 com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl 中提到的解决方案

注意:如果我使用基于 jar 的依赖项,它工作正常,但当使用相同版本的基于插件的依赖项时,它不起作用。类加载器似乎出了问题。

soap osgi java-11 saaj soapexception
2个回答
0
投票

能够通过添加依赖项来解决此问题https://mvnrepository.com/artifact/org.glassfish.hk2/osgi-resource-locator。 Saaj-impl 还具有以 OSGi 方式加载服务的机制,为了使其正常工作,我们需要这种依赖关系。 在您使用 saaj-api 和 saaj-impl 的插件的 manifest.mf 中添加此依赖项


-1
投票

我也有同样的问题!使用Maven,只需在pom.xml中添加这个依赖即可?

© www.soinside.com 2019 - 2024. All rights reserved.