2015-10-29 7 views
-1

При загрузке zip-файла в SFTP мы получаем следующую ошибку. Тот же код отлично работает для другого приложения. Мы используем jsch-0.1.44.jar для соединения SFTP.входной поток закрыт при загрузке zip-файла через jsch на сайт sftp

java.io.IOException: inputstream is closed 
     at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:571) 
     at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:431) 
     at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:398) 
aused by: java.io.IOException: inputstream is closed 
     at com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2326) 
     at com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2350) 
     at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:1923) 
     at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:559) 
     ... 6 more 

ответ

1

Я искал stackoverflow и многие другие источники в Интернете, чтобы получить ответ. Я нашел две причины, которые не были причиной моей конкретной проблемы.

1) Это исключение обычно означает, что соединение было закрыто внезапно. Я бы посмотрел журналы на сервере, чтобы узнать, была ли ошибка. 2) Основной причиной этой ошибки было то, что в коде удаленный путь открывался дважды. Таким образом, даже если ни один канал фактически не закрыт, но, когда удаленный путь пытается открыть второй раз, существующий путь/канал также закрыт или что-то еще, и это исключение поднято.

После выполнения каких-либо POC любые изменения, внесенные нами в код, не оказали никакого влияния. Одной из вещей, на которую было обращено внимание, является передача объекта входного потока в качестве параметра методу, в котором на самом деле вызывается метод channelftp.

this.channelSftp.put (inputstream, strFileName);

Вместо того, чтобы передавать входной сигнал от другого метода, код был записан для формирования входного потока внутри метода, в котором этот вызов вызывается. Это не влияет.

Пробовал загружать файл на сайт sftp через код. Произошла такая же ошибка.

Позже мы обнаружили, что проблем с кодом не было. Ошибка загрузки вручную. Это указывало на то, что мы еще больше разобрались в этой информации об участии SFTP и обнаружили, что формат FILENAME, который мы используем, не соответствует настройке SFTP. Когда мы сопоставили формат имени файла, проблема была решена.

0

Я недавно столкнулся с проблемой, подобной этому, в моем случае это была проблема при входе в систему на удаленном компьютере с использованием JSch.

При попытке вручную подключиться к аппарату, я обнаружил, что пароль истек и запрашивает новый при входе в систему. Он смог подключиться и аутентифицироваться, однако после подключения он не смог получить дальнейшее продвижение. Это объясняет, почему это был сбой входного потока, а не отказ аутентификации.

Я знаю, что это старый вопрос, но кому-либо еще в том же положении, что и трал в Интернете для ответа, это может быть просто простое решение.