java.io.IOException – IO流读取结束

代码似乎在session.connect中断。

 com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read 

堆栈跟踪

 com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read at com.jcraft.jsch.Session.connect(Session.java:534) at com.jcraft.jsch.Session.connect(Session.java:162) at session.connect in uploadFile(ftpService.java:280) 

 try { JSch jsch = new JSch(); Session session = null; session = jsch.getSession(ftpUserName, ftpServer, 22); session.setClientVersion("StrictHostKeyChecking"); //session.setConfig("StrictHostKeyChecking", "no"); session.setPassword(ftpPassword); session.connect(); Channel channel = session.openChannel("sftp"); channel.connect(); ChannelSftp sftpChannel = (ChannelSftp) channel; //sftpChannel.get("remotefile.txt", "localfile.txt"); String path="C:\\srcFolder"; String remotePath="C:\\destFolder"; try { sftpChannel.put(new FileInputStream(new File(path)), remotePath ); } catch (FileNotFoundException e) { // TODO Auto-generated catch block Logger.error(e); e.printStackTrace(); } final Vector files = sftpChannel.ls("."); for (Object obj : files) { System.out.println("f:"+obj); } sftpChannel.exit(); session.disconnect(); } catch (Exception e) { e.printStackTrace(); } 

旧版本的Jsch(例如0.1.52)和最新版本的openssh(例如OpenSSH_7.2p2)存在互操作性问题。 升级到Jsch 0.1.54之后,问题就消失了。