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

时间:2015-02-19 16:43:58

标签: java jsch

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

在Rational Application Developer(RAD)中,所有工作都按预期工作。

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

  

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

我的RAD jdk中通过bat文件运行时,我的机器上没有这些内容?显然,它可以创建连接,因此我的bat文件可以访问jsch-0.1.51.jar,但它遗漏了我的C:\Progra~1\Java\jre6\bin中包含在RAD jre中的其他jar。

2 个答案:

答案 0 :(得分:1)

答案是:设置java.ext.dirs以包含JAR

时要小心

http://peterttseng.blogspot.com/2008/09/be-careful-when-setting-javaextdirs-to.html

答案 1 :(得分:0)

你确定吗?

  • 您的JDK有一个包含KeyPairGenerator类的JAR文件(见下文)?我在下面记录了这个类包含的JAR文件。
  • CLASSPATH设置为包含上述JAR文件之一的路径?
  • 您的JAVA_HOME已设置?

根据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目录添加到CLASSPATH。

<小时/>

此测试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>

可以按如下方式调用此测试:

    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

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