2014-09-24 138 views
1

我將Apache HttpClient 4.3.5 jar添加到我的項目中的新用戶庫,但是每當我運行我的程序時,都會收到NoClassDefFound運行時錯誤。我可以告訴這是由HttpClient類引起的。我不知道如何緩解這個問題。將HttpClient jar添加到eclipse

+0

你通過'Add external jars'添加了罐子? – venkatKA 2014-09-24 04:19:57

+0

你如何準確地運行你的程序?在Eclipse中用'main()'方法右鍵單擊一個類並選擇'Run'?或者在命令行上? – Asaph 2014-09-24 04:20:31

+0

如果你使用Eclipse,右鍵單擊項目,Build path-> Add external jar,選擇你httpclient jar並按ok! – Vito 2014-09-24 09:04:24

回答

1

NoClassDefFound通常表示您缺少對類路徑的所需依賴關係。

如果你看看Maven pom.xml for httpclient,你會發現它有一些傳遞性依賴關係,它的含義取決於其他工件。

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpcore</artifactId> 
</dependency> 
<dependency> 
    <groupId>commons-logging</groupId> 
    <artifactId>commons-logging</artifactId> 
</dependency> 
<dependency> 
    <groupId>commons-codec</groupId> 
    <artifactId>commons-codec</artifactId> 
</dependency> 

所以你可以看到三個神器httpclient取決於:httpcorecommons-loggingcommons-codec

這就是說,你可能會錯過這些依賴關係(因此NoClassDefFound)。如果您使用的是Maven,當您將httpclient作爲依賴項添加時,Maven會爲您提供這些傳遞依賴項int。

但是,它看起來並不像您使用的是Maven。所以你想要做的是下載整個包在HttpComponents Home Page。如果你抓住了二進制distrubutions,像4.3.5.zip,並解壓縮,你會看到在lib DIR所有這些罐子:做的僅僅是添加所有這些罐子到一個庫

commons-codec-1.6 
commons-logging-1.1.3 
fluent-hc-4.3.5 
httpclient-4.3.5 
httpclient-cache-4.3.5 
httpcore-4.3.2 
httpmime-4.3.5 

最好的事情。然後將所有該庫添加到您的項目。

  1. 簡單轉到[窗口] → [設置] →【JAVA] → [構建路徑] → [用戶庫]
  2. 選擇並鍵入一個名稱
  3. 選擇新的圖書館,選擇添加外部罐子,瀏覽並添加您下載的lib目錄中的所有罐子。
  4. 將庫添加到您的項目中。