我現在用的不錯http://www.jcraft.com/jsch/庫 - 但是當我運行一些命令,我看到jsch返回-1 getExitStatus,不時,即使腳本運行正常(當我運行它手工操作始終是成功的0退出代碼)。有任何想法嗎?Jsch錯誤返回代碼不相符
(似乎發生於各種各樣的命令)
我現在用的不錯http://www.jcraft.com/jsch/庫 - 但是當我運行一些命令,我看到jsch返回-1 getExitStatus,不時,即使腳本運行正常(當我運行它手工操作始終是成功的0退出代碼)。有任何想法嗎?Jsch錯誤返回代碼不相符
(似乎發生於各種各樣的命令)
我放棄了Jsch - 其令人難以置信的無益的API和切換到:
http://www.cleondris.ch/opensource/ssh2/
(木衛三SSH2)。 我做了很多,在JVM和超過24時段的使用木衛三的幾個月SSH已被證明可靠得多。而且更令人愉快。我主要的抱怨是顯然無法爲SCP設置超時。
我遭遇了同樣的問題,然後在Jsch更新日誌(http://www.jcraft.com/jsch/ChangeLog)碰到這個傳來:
- 功能:增加了「Channel.isClosed( )」。 Channel.getExitStatus()應 Channel.isClosed()後調用==真。
所以撞倒這件事:前需要 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!");
}
};
好消息!但可能不會倒退。現在還有其他一些選項(爲他們簽出jclouds) – 2011-12-16 05:30:14
我也被燒燬JSch和它的可怕的API和他們的文檔:「......,僅在通道被關閉(更確切地說,就在通道被關閉)。」 – Tnem 2013-06-26 11:39:53