2010-07-01 70 views

回答

5

我放棄了Jsch - 其令人難以置信的無益的API和切換到:

http://www.cleondris.ch/opensource/ssh2/

(木衛三SSH2)。 我做了很多,在JVM和超過24時段的使用木衛三的幾個月SSH已被證明可靠得多。而且更令人愉快。我主要的抱怨是顯然無法爲SCP設置超時。

+0

我也被燒燬JSch和它的可怕的API和他們的文檔:「......,僅在通道被關閉(更確切地說,就在通道被關閉)。」 – Tnem 2013-06-26 11:39:53

4

我遭遇了同樣的問題,然後在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!"); 
    } 

}; 
+0

好消息!但可能不會倒退。現在還有其他一些選項(爲他們簽出jclouds) – 2011-12-16 05:30:14