2009-10-24 17 views
9

Hola, estoy tratando de poner una pequeña aplicación web pero estoy obteniendo el error anterior. A continuación se muestra el códigojava.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: method <init>() V no encontrado

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

estoy usando httpclient-4,0-beta2.jar y httpcore-4.0.1.jar. Parece que BasicHttpContext está en conflicto con algunos otros jarros en mi aplicación, pero no pude resolverlo. Cualquier pista será apreciada.

+0

puede ser útil listar el classpath con el que está ejecutando su código. puede haber un problema sutil que impida la carga del archivo jar previsto ... – atk

+1

Probé con un programa java independiente y agregué solo esos 2 frascos y funciona bien. Classpath de mi aplicación original tiene más de 50 jarras, no estoy seguro de cuál está en conflicto. –

+1

Si usa Eclipse IDE para ver Java Broswing (ventanas -> Mostrar vista -> Java Broswing) y luego explorar el archivo Jar, podrá conocer los detalles de la clase/métodos/variables, etc. – Narayan

Respuesta

9

Parece que tiene un archivo jar con una versión anterior/nueva de BasicHttpContext. Si hubiera un conflicto directo, recibiría un ClassNotFoundException. Los ClassLocaders suelen ser unos idiotas por este tipo de cosas. En este caso, la clase existe, sin embargo, no tiene el método que compiló otra biblioteca (creo que es httpclient que invoca el Context).

+0

Sí parece que mi httpclient es para JDK1.5 y httpcore es para JDK1.3. Traté de obtener httpcore para JDK1.5 pero no pude encontrar ninguno y el uso de una versión más baja de httpclient genera muchos más errores. –

+0

Cuando traté de llamar al constructor de esta manera HttpContext localContext = new BasicHttpContext(); dice: - No se encontró ninguna coincidencia para el constructor() en el tipo org.apache.http.protocol.BasicHttpContext Seguramente es un conflicto con un contenedor existente, estoy avanzando hacia el origen y la corrección. –

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html Parece que si reemplaza httpcore 4.0 con httpcore 4.1 debería estar bien. – Malaxeur

Cuestiones relacionadas