我正在处理使用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>
答案 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 可能是解决此问题的方法