【问题标题】:Jsch throwing End of file ExceptionJsch抛出文件结束异常
【发布时间】: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是没法比的。而且它绝对不能记录请求。

标签: java ftp sftp jsch


【解决方案1】:

我有类似的问题,我没有关闭每个返回的 inputStream “channelSftp.get(fileName)”调用, 尝试关闭 inputStream

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多