Я столкнулся с той же проблемой, а затем столкнулся с этим в журнале изменений Jsch (http://www.jcraft.com/jsch/ChangeLog):
- : добавлено Channel.isClosed (). Channel.getExitStatus () должен вызываться послеChannel.isClosed () == true.
Итак, это сбито с толку: необходимо вызвать до channel.disconnect (), в противном случае по-прежнему возникает ошибка -1:
private static void waitForChannelClosure(ChannelExec ce, long maxwaitMs) {
log.info("waitForChannelClosure >>>");
final long until = System.currentTimeMillis() + maxwaitMs;
try {
while (!ce.isClosed() && System.currentTimeMillis() < until) {
log.info("SFTP channel not closed .. waiting");
Thread.sleep(250);
}
} catch (InterruptedException e) {
throw new RuntimeException("Interrupted", e);
}
if (!ce.isClosed()) {
throw new RuntimeException("Channel not closed in timely manner!");
}
};