Cierpiałem ten sam problem i wtedy natknąłem to w changelogu jsch (http://www.jcraft.com/jsch/ChangeLog):
- cecha: dodanej „Channel.isClosed () ". Channel.getExitStatus() powinien być wywoływany po Channel.isClosed() == true.
więc zapukał ten up: Musi być nazywany przed channel.disconnect(), inny jeszcze dostać -1 problem:
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!");
}
};
ja również zostały spalone przez jsch i to okropne api i ich dokumenty: "... i tylko po zamknięciu kanału (dokładniej, tuż przed zamknięciem kanału)." – Tnem