NoSuchAlgorithmException:DH KeyPairGenerator 在骆驼上不可用-ftp

NoSuchAlgorithmException: DH KeyPairGenerator not available on camel-ftp

我在一个项目中使用 Apache Camel,当我需要使用 camel-ftp 组件将一些文件发送到远程服务器时,我遇到了这个异常:

com.jcraft.jsch.JSchException: Session.connect: java.security.NoSuchAlgorithmException: DH KeyPairGenerator not available

我想知道为什么它会发生在我的项目中。因此,我开始了一个仅包含 camel-core 和 camel-ftp 组件的快速小项目,我将路线粘贴到那里并且运行良好。

 from("file:data/input?noop=true")
    .log("Uploading file ${file:name}")
    .to("sftp://www.mydestination.com:22/../opt/tmp?autoCreate=false&username=MyUser&password=MyPassword&passiveMode=true")
    .log("Uploaded file ${file:name} complete.");

我正在使用 Apache Karaf 来 运行 OSGI 包(我的应用程序就是其中之一)。我检查了不同的环境,但结果仍然是异常。

我真的不知道它会是什么。任何人都知道它的可能原因是什么?

DH 密钥对生成器通常是 JRE/JSE 的一部分,如果您的 JDK 应该包括在内(>顺便说一句,您使用的是哪个 JDK 版本?)。 鉴于此,您的错误可能是由于错误的类路径造成的。

我建议你检查“-Djava.ext.dirs”的值属性(以及相应文件夹的内容),例如:

Windows: java-Djava.ext.dirs="C:\Program Files\Java\jdk1.6.0_07\jre\lib\ext;C:\dir2"

Unix: java-Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:/dir2

您还需要 specify/modify Karaf 安全提供程序,请查看: https://karaf.apache.org/manual/latest/security