0

我的情况与此类似,但它是 bouncycastle 的较新版本,所以我不确定情况是否相同,四年后没有公认的答案:

充气城堡没有这种方法错误

我正在使用带有 ant 构建的 eclipse milo 的 bc:我的依赖项是:bcpkix-jdk15on-1.61.jar bcprov-jdk15on-1.61.jar

当我在 Eclipse 中启动我们的应用程序时,我们能够安全地连接到 UA Expert 测试客户端,没有任何问题。但是,当使用 UA Expert 连接到 SBC 上我们部署的应用程序上的 milo opc-ua 服务器时,我看到此错误:

Mar 05, 2020 6:54:48 PM org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task run
WARNING: Uncaught Throwable during execution.
java.lang.NoSuchMethodError: org.bouncycastle.util.Arrays.areAllZeroes([BII)Z
    at org.eclipse.milo.opcua.stack.core.util.NonceUtil.validateNonce(NonceUtil.java:183)
    at org.eclipse.milo.opcua.stack.core.util.NonceUtil.validateNonce(NonceUtil.java:153)
    at org.eclipse.milo.opcua.stack.server.transport.uasc.UascServerAsymmetricHandler.openSecureChannel(UascServerAsymmetricHandler.java:437)
    at org.eclipse.milo.opcua.stack.server.transport.uasc.UascServerAsymmetricHandler.lambda$sendOpenSecureChannelResponse$1(UascServerAsymmetricHandler.java:301)
    at org.eclipse.milo.opcua.stack.core.channel.SerializationQueue.lambda$encode$0(SerializationQueue.java:57)
    at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:119)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我们有一个 ant 构建,我相信所有的类路径都指向当前的库。

4

2 回答 2

3

您必须有另一个较旧的 BouncyCastle 版本,它也在类路径中或以某种方式在您的构建中。导致此错误的方法仅在 BC v1.61 中添加。

于 2020-03-06T15:18:11.477 回答
1

我们发现另一个 jar pdfbox-all-2.0.13.jar 中有一个较旧的嵌入式 bouncycastle 版本,我们的 ant 构建将这些 jar 解压缩到所需的较新库的较新版本上。删除旧的充气城堡类或使用香草 pdfbox 似乎可以解决 NoSuchMethod 问题。无法想象这将是许多其他人的常见情况。

    <jar jarfile="${dist}/thirdparty.jar">
        <manifest>
            <!--These jars need to be at the same level as the jar created for this project-->
            <attribute name="Compiler" value="${build.compiler}"/>
        </manifest>
        <fileset dir="./src" includes="META-INF/persistence.xml" />
        <zipfileset excludes="META-INF/*.SF" src="../../../filtec-bin/packages/rhino/lib/rhino.jar" />
        <zipfileset excludes="META-INF/*.SF" src="../../../filtec-bin/packages/junit4/junit-4.12.jar" />
        ...
        <zipfileset excludes="META-INF/*.SF" src="../../../filtec-bin/packages/bouncycastle/bcpkix-jdk15on-1.61.jar" />
        <zipfileset excludes="META-INF/*.SF" src="../../../filtec-bin/packages/bouncycastle/bcprov-jdk15on-1.61.jar" />
        ...
        <zipfileset excludes="META-INF/*.SF" src="../../../filtec-bin/packages/pdfBOX/pdfbox-app-2.0.13.jar" />
        ...
于 2020-03-10T02:28:55.467 回答