2013-07-03 200 views
0

我一起使用netbeans 7.1.1和ivy。 我ivy.xml文件如下:包括常春藤依賴關係中的jar文件

<?xml version="1.0" encoding="UTF-8"?> 
<ivy-module version="2.0"> 
    <info module="Laitsv3second" organisation="Laitsv3second" revision="1.0"/> 
<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.integration"> 
</dependency> 
</ivy-module> 

現在的問題是: 我的項目使用log4j庫也是如此。當我運行該項目,我得到一個錯誤,如下所示:

java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest 

下載HttpClient庫包含此類org.apache.http.client.methods.HttpUriRequest.java但這是一個接口,因此這個錯誤產生。我觀察到常青藤在常春藤庫中鏈接sources.jar,其中包含java接口,但我想要的是將httpclient.jar包含在項目中,該項目是包含.class文件的源代碼的編譯版本。這有可能嗎?

回答

0

上面提到的錯誤是因爲ivy庫沒有添加到java classpath中。此問題在ivyBeans網站上報告。 Here are the details of the issue. 正如我在這裏所說的,我也通過在netbeans中關閉'compile on save'選項來解決這個問題。我認爲這個解決方案可能會幫助其他人發佈。

1

首先你的常青藤文件是無效的。你錯過了封閉「依賴」標籤:

<ivy-module version="2.0"> 
    <info module="Laitsv3second" organisation="Laitsv3second" revision="1.0"/> 
    <dependencies> 
     <dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.integration"/> 
    </dependencies> 
</ivy-module> 

我懷疑你是什麼真正的問題是,你是不是你的ANT構建中正確設置你的classpath。根據現有信息無法進一步診斷。

我的建議是使用下面的答案的工作示例:

我建議您查看它如何使用在ivy文件配置和ivy任務,如:

  • cachepath - 用於根據常春藤的配置創建ANT路徑
  • report - 用於記錄常青藤如何解決其依賴關係。爲常青藤文件中的每個配置創建的報告
  • retrieve - 用於在本地安裝解析的文件。建立分佈時很有用
  • manifestclasspath - 鮮爲人知的ANT任務,與常春藤檢索結合時非常強大。
+0

對不起,我粘錯了。我的ivy.xml很好。是的,你是對的我的classpath不能正確地被ant設置,它不包含常春藤庫,我不知道爲什麼。讓我檢查一下你的例子和我的build.xml,我會盡快回復你。謝謝 – tejas

+0

我一直試圖解決這個classpat問題,因爲2天。我在我的常春藤庫上有jhall.jar,並且在運行時仍然出現「java.lang.NoClassDefFoundError:javax/help/HelpSet」錯誤。試圖找到原因。 – tejas

+0

@tejas這是一個新問題。如上所述,不可能說,類路徑管理是由構建文件中的常春藤任務完成的。抱歉,不能進一步幫助。 –

相關問題