Apache camel PGP Crypto dataformat导致异常:java.lang.NoSuchMethodError:org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey

Apache camel PGP Crypto dataformat导致异常:java.lang.NoSuchMethodError:org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey,apache-camel,gnupg,Apache Camel,Gnupg,我正在使用Camel 2.12.1测试pgp组件。最终,我希望SFTP一个pgp加密的文件,并让Camel在处理之前解密该文件 我的路线: from("direct:decrypt").unmarshal().pgp("file:///home/cps/.gnupg/secring.gpg", "developer", "xxx") .to("log:decrypt"); “我的路线”导致以下异常: java.lang.NoSuchMethodError: org.bouncy

我正在使用Camel 2.12.1测试pgp组件。最终,我希望SFTP一个pgp加密的文件,并让Camel在处理之前解密该文件

我的路线:

from("direct:decrypt").unmarshal().pgp("file:///home/cps/.gnupg/secring.gpg", "developer", "xxx")
        .to("log:decrypt");
“我的路线”导致以下异常:

java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Lorg/bouncycastle/openpgp/operator/PBESecretKeyDecryptor;)Lorg/bouncycastle/openpgp/PGPPrivateKey;
    at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPrivateKey(PGPDataFormatUtil.java:164)
    at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPrivateKey(PGPDataFormatUtil.java:139)
My pom.xml文件添加了以下依赖项:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-crypto</artifactId>
</dependency>

我将旧的bcpg-jdk16.jar重新添加到jre/lib/ext中,一切正常!?我现在很困惑为什么会这样,但我很感激向前的进展和提供的帮助。

这意味着bouncyCastle的版本与JDK的版本不兼容。 尝试:


org.bouncycastle


还有一个serviceMix版本:

<dependency>
  <groupId>org.apache.servicemix.bundles</groupId>
  <artifactId>
    org.apache.servicemix.bundles.bcpg-jdk15on
  </artifactId>
  <version>1.50_1</version>
</dependency>

org.apache.servicemix.bundles
org.apache.servicemix.bundles.bcpg-jdk15on
1.50_1

只是一个猜测:您是否也在pom文件中添加了bouncycastle作为依赖项?或者其他依赖项是否会引入bouncycastle?您的类路径中可能有两个版本的BC,其中一个没有提供异常中提到的方法。您可以使用mvn depdency:tree检查bcgp-jdk15on的版本是否为1.49吗?您确定您的证书位于
file:///home/cps/.gnupg/secring.gpg
?这不是你要解密的文件吗?您的私钥是否包含用户id
developer
这更像是
user
,密码只是可选的。谢谢大家的帮助。我有新的问题,但已经取得了进展。Skyr的思考和评论引发了人们的记忆。我们在jre/lib/ext目录中安装了bouncycastle库,这些库产生了冲突。我现在有不同的问题,但我在原始问题中描述的问题的根本原因基本上是重复的罐子。
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcpg-jdk15on</artifactId>
  <version>1.50</version>
</dependency>
<dependency>
  <groupId>org.apache.servicemix.bundles</groupId>
  <artifactId>
    org.apache.servicemix.bundles.bcpg-jdk15on
  </artifactId>
  <version>1.50_1</version>
</dependency>