【发布时间】:2017-03-30 20:55:58
【问题描述】:
这发生在某些文件上,但不会发生在其他文件上。
1: End of file
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2846)
at com.jcraft.jsch.ChannelSftp._stat(ChannelSftp.java:2198)
at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1294)
at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1266)
代码很简单:
jsch.addIdentity("privateKeyFromOdin", sftpPrivateKey, null, null);
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
Vector<ChannelSftp.LsEntry> ls = channelSftp.ls(".");
for (ChannelSftp.LsEntry entry : ls) {
String fileName = entry.getFilename();
encryptedStream = channelSftp.get(fileName);//Exception thrown here
}
更奇怪的是,这曾经运作良好。但我不知道发生了什么变化。
【问题讨论】:
-
你能用一些独立的 SFTP 客户端下载这些文件吗,比如 WinSCP?向我们展示它的详细日志文件。
-
@MartinPrikryl 是的,我可以
-
因此,再次显示其日志文件,使用带有
get /path/file命令的脚本(这将使 WinSCP 使用与 JSch 相同的 SFTP 请求)。 -
对不起,我不明白。我从 bash 调用 sftp,然后获取有效的文件。
-
好的,但
sftp可能不会使用“stat”请求。所以跟JSch是没法比的。而且它绝对不能记录请求。