2009-10-24 3 views
9

Hallo Ich versuche, eine kleine Webapp aufzustellen, aber ich bekomme über Fehler. Unten ist mein Codejava.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: Methode <init>() V nicht gefunden

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); 

Ich verwende httpclient-4.0-beta2.jar und httpcore-4.0.1.jar. Es scheint, dass BasicHttpContext mit einigen anderen Jars in meiner App in Konflikt gerät, aber ich konnte es nicht herausfinden. Jeder Hinweis wird geschätzt.

+0

kann es hilfreich sein, den Klassenpfad aufzulisten, mit dem Sie Ihren Code ausführen. es kann ein subtiles Problem sein, das das Laden der gewünschten JAR-Datei verhindert ... – atk

+1

Ich habe es mit einem eigenständigen Java-Programm versucht und nur diese 2 JARs hinzugefügt und es funktioniert gut. Classpath meiner ursprünglichen App hat mehr als 50 Gläser, ich bin mir nicht sicher, welches in Konflikt steht. –

+1

Wenn Sie Eclipse IDE verwenden, gehen Sie zur Java Broswing Ansicht (windows -> Ansicht anzeigen -> Java Broswing) und browsen Sie die Jar Datei. Sie werden über die Details der Klasse/Methoden/Variablen usw. informiert. – Narayan

Antwort

9

Es sieht so aus, als ob Sie eine JAR-Datei mit einer alten/neueren Version von BasicHttpContext haben. Wenn es einen direkten Konflikt gäbe, würden Sie eine ClassNotFoundException erhalten. ClassLoaders sind in der Regel Idioten über diese Art von Dingen. In diesem Fall existiert die Klasse jedoch nicht mit der Methode, dass eine andere Bibliothek (ich glaube es ist httpclient, die Context aufruft) kompiliert wurde.

+0

Ja sieht so aus, dass mein httpclient für JDK1.5 und httpcore für JDK1.3 ist. Ich habe versucht, httpcore für JDK1.5 zu bekommen, konnte aber keine finden und die Verwendung einer niedrigeren Version von httpclient wirft viel mehr Fehler. –

+0

Als ich versuchte, den Konstruktor wie folgt aufzurufen HttpContext localContext = new BasicHttpContext(); es heißt: - Es wurde keine Übereinstimmung gefunden für constructor() in der Art org.apache.http.protocol.BasicHttpContext Es ist sicherlich ein Konflikt mit einem vorhandenen Glas, ich bin in Richtung auf rootcause und zu beheben. –

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html Sieht aus, als ob Sie httpcore 4.0 mit httpcore 4.1 ersetzen sollten, sollten Sie in Ordnung sein. – Malaxeur

Verwandte Themen