2012-09-10 63 views
2

我正嘗試在我的構建文件中使用Ant <scp>任務。它每當我運行目標時都會給我一個錯誤::com/jcraft/jsch/UserInfo

cannot be found: com/jcraft/jsch/UserInfo 

我讀過一些文章,談論與Ant 1.7有此問題。一些帖子正在討論從ant_home庫中刪除ant-jsch.jar文件。不幸的是,我不能這麼做,因爲ant_home在許多其他項目中很常見,我無法從lib目錄中刪除或更新任何jar文件。

有沒有一種方法可以純粹使用Ant配置來解決此問題?

回答

3

ant-jsch.jar包含由Apache Ant團隊開發的ssh相關任務,而jsch.jar包含jsch庫,它是這些ssh任務的依賴項。

所以做一點檢查:檢查jsch.jar是否在您的$ANT_HOME/lib,並檢查罐子是否包含UserInfo.class

如果發生上述任一情況,請下載jsch.jar的最新版本,並將其放入$ANT_HOME/lib

我目前使用Ant 1.8.4,去年下載jsch.jar沒有任何問題。


更新:

查看本頁面第一:

http://ant.apache.org/manual/install.html#optionalTasks

請注意,<scp>等SSH任務(螞蟻jsch.jar)都包含在Ant二進制分發默認。您不需要編寫<taskdef>以使用<scp>,因爲它默認包含在Ant的lib目錄中。我建議你把jsch.jar該目錄與以下幾點:

  1. 這些SSH任務不支持的classpath高清,也就是說,你不能定義一個<classpath>指向jsch.jar,然後引用它在一個SSH任務。
  2. 此外,您可以將jsch.jar放入系統CLASSPATH環境變量中包含的任何目錄中,但這不是一個好習慣。
  3. 我們通常把一個任務及其依賴關係放在同一個目錄下。
+0

嗨,感謝您的評論。我有jsch jar文件,但它不在ANT_HOME/lib目錄中。它在一個單獨的目錄下。有沒有辦法從不同的位置加載該jar文件。如果我使用classpath任務,它將使用不同的類加載器權限。對不起,請介意我對螞蟻有限的知識。 –

+0

查看更新的答案。 – coolcfan

+0

嘿,隊友感謝您的幫助。它工作,如果我有在lib目錄中的jar。 –