2009-10-24 43 views
9

Ciao Sto cercando di mettere su una piccola webapp ma sto ottenendo l'errore sopra. Qui di seguito è il mio codicejava.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: metodo <init>() V non trovato

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

Sto usando httpclient-4.0-beta2.jar e httpcore-4.0.1.jar. Sembra che BasicHttpContext sia in conflitto con altri jar nella mia app, ma non riesco a capirlo. Ogni indizio sarà apprezzato.

+0

potrebbe essere utile elencare il classpath con cui si sta eseguendo il codice. potrebbe esserci un sottile problema che impedisce il caricamento del file jar previsto ... – atk

+1

Ho provato con un programma Java autonomo e ho aggiunto solo quei 2 jars e funziona perfettamente. Classpath della mia app originale ha più di 50 jar, non sono sicuro di quale sia in conflitto. –

+1

Se si utilizza Eclipse IDE vista Java Broswing Java (windows -> Mostra vista -> Java Broswing) quindi si naviga nel file Jar, si sarà in grado di conoscere i dettagli della classe/metodi/variabili ecc. – Narayan

risposta

9

Sembra che tu abbia un file jar con una versione precedente/nuova di BasicHttpContext. Se ci fosse un conflitto diretto, riceverai uno ClassNotFoundException. ClassLoaders sono tipicamente jerk su questo genere di cose. In questo caso, la classe esiste tuttavia non ha il metodo che un'altra libreria (credo che sia httpclient che sta invocando il Context) è stata compilata contro.

+0

Sì sembra che il mio httpclient sia per JDK1.5 e httpcore per JDK1.3. Ho provato ad ottenere httpcore per JDK1.5 ma non sono riuscito a trovarne nessuno e utilizzando la versione inferiore di httpclient genera molti più errori. –

+0

Quando ho provato a chiamare il costruttore come questo HttpContext localContext = new BasicHttpContext(); dice: - Nessuna corrispondenza è stata trovata per constructor() nel tipo org.apache.http.protocol.BasicHttpContext È sicuramente un conflitto con un jar esistente, sto spostando verso rootcause e fix. –

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html Sembra che se si sostituisce httpcore 4.0 con httpcore 4.1 si dovrebbe andare bene. – Malaxeur

Problemi correlati