2009-10-24 95 views
9

嗨我想搭起一個小的webapp,但我得到以上錯誤。以下是我的代碼java.lang.NoSuchMethodError:org.apache.http.protocol.BasicHttpContext:方法<init>()V未找到

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("SomeURL"); // Using a URL local to my machine 
// after setting nameValuePair and setting it on httppost 
httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

// This is where I am getting the above mentioned exception 
HttpResponse response = httpclient.execute(httppost); 

我使用httpclient-4.0-beta2.jar和httpcore-4.0.1.jar。它看起來像BasicHttpContext與我的應用程序中的一些其他罐子衝突,但我無法弄清楚。任何線索將不勝感激。

+0

它可能有助於列出您正在運行代碼的類路徑。有可能是一個微妙的問題,防止加載的目標jar文件... – atk 2009-10-24 05:22:50

+1

我嘗試了一個獨立的Java程序,並只添加了2個罐子,它工作正常。我的原始應用的Classpath有超過50個罐子,我不確定哪一個是衝突的。 – 2009-10-24 06:50:54

+1

如果你正在使用Eclipse IDE轉到Java Broswing視圖(windows - > Show view - > Java Broswing),那麼瀏覽Jar文件,你將能夠知道關於類/方法/變量等的詳細信息。 – Narayan 2009-10-26 06:31:34

回答

9

它看起來像你有一箇舊版本/更新版本BasicHttpContext的jar文件。如果發生直接衝突,您將收到ClassNotFoundException。類加載器通常是這種事情的混蛋。在這種情況下,類存在但是沒有另一個庫(我相信它是httpclient調用Context)的方法被編譯。

+0

是的它看起來像我的httpclient用於JDK1.5,httpcore用於JDK1.3。我試圖獲得JDK1.5的httpcore,但找不到任何和使用較低版本的httpclient拋出更多的錯誤。 – 2009-10-24 05:59:39

+0

當我試圖調用像這樣的構造函數時 HttpContext localContext = new BasicHttpContext(); 它說: - 沒有找到類型org.apache.http.protocol.BasicHttpContext中的構造函數()的匹配 它肯定與現有jar有衝突,我正朝着根本原因着手並修復。 – 2009-10-24 09:23:03

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html 看起來如果你用httpcore 4.1替換httpcore 4.0你應該沒問題。 – Malaxeur 2009-10-24 17:46:40

相關問題