我正在使用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。
答案 0 :(得分:1)
答案是:设置java.ext.dirs以包含JAR
时要小心http://peterttseng.blogspot.com/2008/09/be-careful-when-setting-javaextdirs-to.html
答案 1 :(得分:0)
你确定吗?
根据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是否可以在项目之外工作。