NoSuchMethodError:我需要什么版本的Apache Xml Security



我得到了这个异常

java.lang.NoSuchMethodError: org.apache.xml.security.utils.XMLUtils.decode

然后我更新了我的依赖项,并转到另一个类似的异常,我很长一段时间都无法解决:

当我的模块在调用此方法时收到请求时,我得到了NoSuchMethodError

WebServiceTemplate client = ...;
client.marshalSendAndReceive(req, new ActionCallback("http://samples/RequestOrder"));

它抛出

java.lang.NoSuchMethodError: org.apache.xml.security.encryption.AbstractSerializer: method <init>()V not found
at org.apache.cxf.ws.security.wss4j.StaxSerializer.<init>(StaxSerializer.java:62)

(至少我认为(我的依赖的相关部分

<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.6.15</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.3.6</version>
</dependency>

我看了org.apache.xml.security.encryption的多个版本,但这些版本中似乎没有这样的方法。你知道版本的正确组合是什么吗?

作为旁注,我也发现了这个库,并认为这会很有帮助,但它似乎与前面提到的<groupId>org.apache.ws.security</groupId>有所不同

<dependency>
<groupId>org.apache.wss4j</groupId>
<artifactId>wss4j</artifactId>
<version>2.3.0</version>
<type>pom</type>
</dependency>

我遇到了类似的问题,并在网上尝试了可能的解决方案,但没有成功。一些文档表明,依赖项与其他依赖项的不匹配是关键,比如这里。

关于这个确切报告的错误,我不断更改下面依赖项的版本,最终达到了这个版本,这是发布这个答案时的最新版本。

<dependency>
<groupId>org.apache.santuario</groupId>
<artifactId>xmlsec</artifactId>
<version>2.1.4</version>
</dependency>

但请记住,如果您有以下依赖项,请排除xmlsec:的依赖项

<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.santuario</groupId>
<artifactId>xmlsec</artifactId>
</exclusion>
</exclusions>
</dependency>

最新更新