【问题标题】:Unable to create message factory for SOAP: Unable to create SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found无法为 SOAP 创建消息工厂:无法创建 SAAJ meta-factoryProvider com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl not found
【发布时间】:2023-02-11 22:55:52
【问题描述】:

我们的产品建立在 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 没有包 com.sun.xml.messaging.saaj.soap,它在 JDK1.8 中更早。所以我为 saaj-impl-1.5.1 添加了一个依赖项以及它所需的传递依赖项。 我还尝试添加系统属性来指定 MessageFactory 的实现,但仍然出现相同的错误。也尝试使用较低版本的saaj-impl,但错误仍然存​​在。

我尝试了Unable to create SAAJ meta-factory after packaging as JARUnable to create SAAJ meta-factory: Provider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found中提到的解决方案

注意:如果我使用基于 jar 的依赖项,它工作正常,但在使用相同版本的基于插件的依赖项时不起作用。类加载器似乎正在发生某些事情。

【问题讨论】:

标签: soap osgi java-11 saaj soapexception


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多