Java “获取异常”;“会话中断”;通过jsch调用ftp服务器时
当我试图与ftp服务器连接以进行文件上载时,出现异常Java “获取异常”;“会话中断”;通过jsch调用ftp服务器时,java,groovy,jsch,Java,Groovy,Jsch,当我试图与ftp服务器连接以进行文件上载时,出现异常com.jcraft.jsch.JSchException:会话已关闭 代码在groovy中: String SFTPHOST = "########" int SFTPPORT = 22 String SFTPUSER = "########" String SFTPPASS = "########" String SFTPWORKINGDIR = "/QA/" ChannelSftp sftp = null Session session
com.jcraft.jsch.JSchException:会话已关闭
代码在groovy中:
String SFTPHOST = "########"
int SFTPPORT = 22
String SFTPUSER = "########"
String SFTPPASS = "########"
String SFTPWORKINGDIR = "/QA/"
ChannelSftp sftp = null
Session session = null
try {
JSch jsch = new JSch()
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT)
session.setPassword(SFTPPASS)
session.setConfig("StrictHostKeyChecking", "no")
session.setConfig("PreferredAuthentications",
"publickey,keyboard-interactive,password")
session.connect()
Channel channel = session.openChannel "sftp"
channel.connect()
sftp = channel as ChannelSftp
sftp.cd SFTPWORKINGDIR
File f = new File("Demo.csv")
sftp.put(new FileInputStream(f), f.getName())
//def fileList = sftp.ls("*")
println fileList.size()
} catch (Exception ex) {
ex.printStackTrace()
}
我明白了这个问题…实际上JSch不是一个FTP客户端,而是一个SSH客户端(包含一个SFTP实现)。我连接的ftp服务器不是ssh服务器。这就是为什么jsch无法连接到ftp服务器的原因。我使用了apache commons ftp客户端,其工作正常请将您的问题包括您收到的实际错误消息,包括堆栈跟踪。这是它解决的其他问题…这是当前场景我调试了一点,发现在session.openChannel()方法中,它在以下行失败:如果(!isConnected){抛出新的JSchException(“会话关闭”);}那么您调试了
session.connect()了吗
要查看它是如何实现的,它既不连接也不引发异常?+如果不在任何地方指定主机密钥,您如何传递StricHostKeyChecking=yes
?我已尝试设置StricHostKeyChecking=no,我得到了相同的异常。