Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSch执行SFTP时无法连接到安全通道_Java_Exception_Sftp_Jsch - Fatal编程技术网

Java 使用JSch执行SFTP时无法连接到安全通道

Java 使用JSch执行SFTP时无法连接到安全通道,java,exception,sftp,jsch,Java,Exception,Sftp,Jsch,我正在尝试实现JSch,以便从远程windows sftp服务器到Linux检索文件 Session session = null; Channel channel = null; ChannelSftp channelSftp = null; try{ JSch jsch = new JSch(); session = jsch.getSession("userName","hostName",22);

我正在尝试实现JSch,以便从远程windows sftp服务器到Linux检索文件

Session session = null;
    Channel channel = null;
    ChannelSftp channelSftp = null;
        try{
           JSch jsch = new JSch();
           session = jsch.getSession("userName","hostName",22);
           session.setPassword("password");
           java.util.Properties config = new java.util.Properties();
           config.put("StrictHostKeyChecking", "no");
          session.setConfig(config);
          session.connect();
          System.out.println(session.sendKeepAliveMsg());
          channel = session.openChannel("sftp");
          channel.connect();
         }catch(Exception e){
               e.printstacktrace();
         }
运行此代码时,我遇到以下异常

com.jcraft.jsch.JSchException: java.io.IOException: inputstream is closed
    at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:288)
    at com.jcraft.jsch.Channel.connect(Channel.java:152)
调试时,我发现:

start();

通道类中的方法正在抛出异常。有什么我可以阻止的吗?我不明白为什么什么都不做就有这个方法。

在连接之前,尝试将您的频道转换为ChannelSft:

Channel channel = session.openChannel("sftp");
ChannelSftp channelSftp = (ChannelSftp) channel;
channelSftp.connect();

嘿,我很抱歉把它标记为已修复……我早就修复好了。。谢谢你的回答,虽然我也有同样的问题。我从两个方面进行了调查;1.与发生异常一样,我发现我的应用程序发送了带有重置平面集的TCP数据包(这可能表明会话中存在一些问题)。我的应用程序的实现与上面的症状完全相同。我的疑问是,在异常堆栈跟踪方面,ChannelSftp的start()方法最终被调用,那么在调用connect()方法之前将channel对象强制转换为ChannelSftp的确切原因是什么呢。谢谢你们hint@Quintus.Zhou铸造与否没有任何区别。实现没有改变。我也遇到了同样的问题,不管它是否在任何情况下被优先铸造,我都会遇到。