gpt4 book ai didi

java - 调用 soap 时出现奇怪的错误 - llegalAccessError : tried to access field org. apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaid

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:02 28 4
gpt4 key购买 nike

一段时间以来我一直在研究 soap 客户端,但我仍然无法弄清楚。

我有这个错误:

Exception in thread "main" java.lang.IllegalAccessError: tried to access field org.apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaid from class org.apache.cxf.binding.soap.saaj.SAAJStreamWriter
at org.apache.cxf.binding.soap.saaj.SAAJStreamWriter.getPrefix(SAAJStreamWriter.java:79)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.writeSoapEnvelopeStart(SoapOutInterceptor.java:109)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:87)
at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor.handleMessage(SoapOutInterceptor.java:67)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
at org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:312)
at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:321)
at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:240)
at com.sigetel.web.web.rest.consumer.SoapClient.invoke(SoapClient.java:63)
at com.sigetel.web.web.rest.consumer.SoapClient.main(SoapClient.java:37)
Disconnected from the target VM, address: '127.0.0.1:60128', transport: 'socket'

Process finished with exit code 1

我看到它有点常见,但仍然无法正常工作。

这是我的代码:

 Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);
SOAPMessage response;
SOAPBody responseBody;
dispatch.getRequestContext().put(Dispatch.SOAPACTION_USE_PROPERTY, true);
dispatch.getRequestContext().put(Dispatch.SOAPACTION_URI_PROPERTY, soapActionUri);
try {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
StreamSource msgSrc = new StreamSource(new StringReader(request));
soapPart.setContent(msgSrc);
message.saveChanges();


response = dispatch.invoke(message);
responseBody = response.getSOAPBody();
....

可能相关的相关依赖项:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.6</version>
</dependency>

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.9</version>
</dependency>

<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.2.11</version>
</dependency>

<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.6.11</version>
</dependency>

编辑:

还有这些:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.11</version>
</dependency>

知道这个错误吗?

最佳答案

您可能已经注意到,您有不兼容的 SAAJStreamWriter 版本和 OverlayW3CDOMStreamWriter .

SAAJStreamWriter 位于包 cxf-rt-bindings-soap 中,由以下人员提供:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.11</version>
</dependency>

OverlayW3CDOMStreamWriter 位于 pachage cxf-core 中,由:

提供
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.6</version>
</dependency>

尝试最新版本之一 org.apache.cxf - 3.1.13 或 3.2.0 - 两个依赖项的版本相同。

关于java - 调用 soap 时出现奇怪的错误 - llegalAccessError : tried to access field org. apache.cxf.staxutils.OverlayW3CDOMStreamWriter.isOverlaid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46686169/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com