1

我正在尝试使用此调用加密我的 XMl:

XMlCipher.martial(Document context,ReferenceList referenceList)

为此,项目引用 xmlsec-1.5.3.jar

我能够在 weblogic server 上成功构建和部署代码,但是执行后我在日志中收到以下错误。

Caused by: java.lang.NoSuchMethodError: 
org.apache.xml.security.encryption.XMLCipher.martial(Lorg/w3c/dom/Document;Lorg/apache/xml/security/encryption/ReferenceList;)Lorg/w3c/dom/Element;
at com.ally.util.encryption.EncryptionUtil.generateEncryptedXML(EncryptionUtil.java:381)
at com.ally.util.encryption.EncryptionUtil.getEnryptedXMLDocument(EncryptionUtil.java:443)
at com.ally.partner.fis.acctinq.FISSoapHandler.getFISEncryptedHeader(FISSoapHandler.java:154)
4

2 回答 2

0

这种错误总是由在你的类路径中有多个引用引起的XMlCipher。它可能是另一个jar 中的副本xmlsec.jar或另一个实例。XMlCipher

您有几个选项来调试问题:

  • 编辑您的战争文件以删除重复的 jar 和/或不同版本的XMlCipher
  • 连接到您的 weblogic 托管服务器jconsole并查看类路径。看看您是否注意到另一个 xmlsec.jar 实例被包含在内

您可能需要通过在 weblogic.xml 中指定以下内容来告诉 weblogic 首选存在于 .war/.ear 文件中的类的实例:

<container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

<wls:container-descriptor>
     <wls:prefer-application-packages>
         <wls:package-name>org.apache.xml.security.*</wls:package-name>
     </wls:prefer-application-packages>
</wls:container-descriptor>

有关更多详细信息和类似问题,请参阅文档,例如: Weblogic 10.3.1.0 is using com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar... I want to use commons-net-2.0 .jar 来自我的代码

于 2014-12-02T17:21:25.283 回答
0

我意识到您没有提到使用 Maven 或 SoapUI,但我java.lang.NoSuchMethodError: org.apache.xml.security.encryption.XMLCipher.setSecureValidation在尝试使用 soapui-maven-plugin 时收到了类似的异常 (),并希望发布我的解决方案以期提供帮助。

我的解决方法是向 pom.xml 中的 soapui-maven-plugin 添加一个 xml-security 依赖项,如下所示:

<!-- To run, enter this command from the module directory:  mvn soapui:test -->
<build>
 <plugins>
    <plugin>
        <groupId>com.smartbear.soapui</groupId>
        <artifactId>soapui-maven-plugin</artifactId>
        <version>5.1.1</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.santuario</groupId>
                <artifactId>xmlsec</artifactId>
                <version>1.5.2</version>
            </dependency>
        </dependencies>
        <configuration>
            <projectFile>src/test/soap-ui/your-soapui-xml-file.xml</projectFile>
        </configuration>
    </plugin>
</plugins>

就我而言,我的项目中的其他任何地方都没有 xml 安全依赖项。

在其他情况下,似乎有些人可能会遇到此错误,因为他们的项目中有多个 xml 安全依赖项(并且它们是冲突的,就像一个答案已经暗示的那样)。因此,如果上述修复在这种情况下对您不起作用,您可能需要查看项目中的哪些依赖项包括 xml 安全性并确定要包含哪个以及要排除哪个(例如使用 Maven 的在给定的 pom 中排除或提供范围标记)。

于 2016-05-24T14:26:33.123 回答