JAVA - 找不到com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl

时间:2017-12-19 12:27:17

标签: java soap soap-client

我正在处理使用SOAP请求使用Web服务的应用程序。

有时我会收到此错误:

filters.LoggerFilter:92 - org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.Error: javax.xml.soap.SOAPException: Unable to create SAAJ meta-factoryProvider com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl not found

奇怪的是我随机得到了这个错误,但我似乎无法弄清楚原因。

我甚至添加了一个新的依赖项,但它似乎无法解决问题:

    <dependency>
        <groupId>com.sun.xml.messaging.saaj</groupId>
        <artifactId>saaj-impl</artifactId>
        <version>1.3</version>
    </dependency>

5 个答案:

答案 0 :(得分:1)

对于那些在Java SDK 9+下使用Spring Boot在intellij IDEA中遇到此问题的人,您必须在VM参数中明确包含ASPxGridView(编辑配置-> VM选项)。 This answer可能有助于解决与新Java模块相关的其他导入问题

答案 1 :(得分:1)

在使用Java 11创建使用SOAP请求的应用程序时,我遇到了同样的问题。

我添加了新的依赖关系,它对我来说很好用。

transfer

答案 2 :(得分:0)

我有同样的问题。 对我来说,添加saaj-impl不足以消除异常

<dependency>
    <groupId>com.sun.xml.messaging.saaj</groupId>
    <artifactId>saaj-impl</artifactId>
    <version>1.5.2</version>
</dependency>

我还必须添加saaj-api,最终将其修复:

<dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>saaj-api</artifactId>
    <version>1.3.5</version>
</dependency>

由于我在通过命令检查后意识到我的应用程序正在使用saaj-api 1.3.4,因此升级到1.3.5很有帮助

mvn依赖项:tree -Dverbose

答案 3 :(得分:0)

对我来说,我使用的是 Java 13,以下对我有用(在 pom.xml 中添加这些)

private val channelProvider: TransportChannelProvider
    get() {
        return FixedTransportChannelProvider
            .create(
                GrpcTransportChannel.create(channel())
            )
    }

private fun channel(): ManagedChannel {
    return if (channels.isEmpty()) {
        val endpoint = emulator.emulatorEndpoint
        val channel = ManagedChannelBuilder
            .forTarget(endpoint)
            .usePlaintext()
            .build()
        channels.add(channel)
        channel
    } else {
        channels.first()
    }
}

var emulator: PubSubEmulatorContainer = PubSubEmulatorContainer(
        DockerImageName.parse("gcr.io/google.com/cloudsdktool/cloud-sdk:latest")
    )

答案 4 :(得分:0)

将您的项目 sdk 更改为 Java 1.8

如果您使用 import javax.xml.ws 库,它可能会混淆 Java 11 中的 com.sun.xml.messaging.saaj 依赖项。清除 saaj 依赖项然后使用 Java8 可能是解决此问题的方法