Java 通过JSch在SFTP服务器上创建目录时获取NoSuchAlgorithmException

Java 通过JSch在SFTP服务器上创建目录时获取NoSuchAlgorithmException,java,jsch,Java,Jsch,我正在使用JSch将文件SFTP到我的服务器 在rationalapplicationdeveloper(RAD)中,所有工作都按预期进行 在RAD之外,通过bat文件运行时,我连接到SFTP服务器没有任何问题,但在尝试创建目录时,我收到以下错误消息: com.jcraft.jsch.JSchException:Session.connect:java.security.nosuchagorithmexception:DH KeyPairGenerator不可用 当通过bat文件运行RAD jd

我正在使用JSch将文件SFTP到我的服务器

在rationalapplicationdeveloper(RAD)中,所有工作都按预期进行

在RAD之外,通过bat文件运行时,我连接到SFTP服务器没有任何问题,但在尝试创建目录时,我收到以下错误消息:

com.jcraft.jsch.JSchException:Session.connect:java.security.nosuchagorithmexception:DH KeyPairGenerator不可用

当通过bat文件运行RAD jdk时,我的机器上没有什么RAD jdk?显然,它可以创建连接,这样我的bat文件就可以访问
jsch-0.1.51.jar
,但是它在我的
C:\Progra~1\Java\jre6\bin
中缺少了一些其他jar,这些jar包含在RAD jre中。

你确定吗
  • 您的JDK有一个包含KeyPairGenerator类的JAR文件(见下文)
    我在下面记录了这个类包含哪些JAR文件。
  • 类路径设置为包含上述JAR文件之一的路径?
  • 您的JAVA\u主页已设置?

根据findJAR.com,KeyPairGenerator类包含在以下JAR文件中:

rt.jar
org.osgi.foundation-1.0.0.jar
org.osgi.foundation-1.2.0.jar
我搜索了
rt.jar
  • 文件
    rt.jar
    位于我的ANT-lib目录中。
  • 文件
    rt.jar
    也位于我的JDK目录的
    jre/lib
    子目录中。

如果您的任何地方都没有包含JAR文件,那么请尝试将ANT lib目录添加到您的类路径中


此test ANT项目可用于验证SSH是否正常工作:

    <?xml version="1.0" encoding="windows-1252" ?>
    <project name="ServerSSH" default="dist" basedir=".">
      <target name="dist">
        <echo message="TEST BEGINNING"></echo>
        <sshexec host="svr1"
                 username="user1"
                 description="Test connection"
                 keyfile="c:/.ssh/id_rsa"
                 trust="true"
                 command="echo CONNECTION SUCCESS FOR SERVER SVR1"
                 failonerror="true"/>

        <echo message="TEST END"></echo>

      </target>

    </project>

通过运行测试,您可以验证SSH for JAVA是否在项目之外工作。

答案是:在将JAVA.ext.dirs设置为包含JAR时要小心


是的,我在C:\Progra~1\Java\jre6\lib中有rt.jar,在我的bat文件中我正在设置路径:set PATH=。;C:\Progra~1\Java\jre6\bin;%我的RAD lib文件夹rt.jar中的路径%比较旧,大小也比较小,我实际上尝试用RAD lib文件夹ad中的rt.jar文件替换C:\Progra~1\Java\jre6\lib中的rt.jar文件。当我这样做时,我的程序甚至不会启动。我的rt.jar是这个大小:26868873如果您的服务器是OpenSSH,您确定OpenSSH至少是版本2.8吗?较低版本不支持DH算法。有关OpenSSH(服务器端)问题的更多信息(如果版本太低,在尝试使用JAVA之前,问题可能不会发生),请参阅以下URL:
    set JAVA_HOME=c:\progra~1\Java\jdk1.7.0_21
    set ANT_HOME=C:\ant
    set ANTLIB=c:\ant\lib
    set PATH=%ANT_HOME%\bin;%ANT_HOME%\lib;
    ant -d -lib %ANTLIB% dist -f SSHTEST.xml