tôi phải chịu đựng cùng một vấn đề và sau đó đi qua này trong changelog Jsch (http://www.jcraft.com/jsch/ChangeLog):
- tính năng: thêm 'Channel.isClosed () '. Channel.getExitStatus() phải là được gọi sau Channel.isClosed() == true.
Vì vậy, gõ này lên: Nhu cầu được gọi là trước channel.disconnect(), khác vẫn nhận được -1 vấn đề:
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!");
}
};
Nguồn
2011-12-14 17:02:56
Tôi cũng đã được đốt cháy bởi JSch và đó là khủng khiếp api và tài liệu của họ: "... và chỉ sau khi kênh đã bị đóng (chính xác hơn, ngay trước khi kênh bị đóng)." – Tnem