2009-10-24 6 views
9

안녕하세요 저는 작은 웹 애플리케이션을 구현하려고하지만 위의 오류가 발생합니다. 아래는 내 코드입니다java.lang.NoSuchMethodError : org.apache.http.protocol.BasicHttpContext : method <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

+1

독립 실행 형 Java 프로그램을 사용하여 시도하고 그 2 병을 추가하고 잘 작동합니다. 내 원래 응용 프로그램의 Classpath에는 50 개 이상의 항아리가 있습니다. 어느 것이 충돌하는지 확실하지 않습니다. –

+1

Eclipse IDE goto Java Broswing보기 (Windows ->보기 표시 -> Java Broswing)를 사용중인 경우 Jar 파일을 브라우저하면 클래스/메소드/변수 등의 세부 사항을 알 수 있습니다. – Narayan

답변

9

오래된/새로운 버전의 jar 파일이 BasicHttpContext 인 것 같습니다. 직접 충돌이 발생한 경우 ClassNotFoundException을 받게됩니다. ClassLoaders는 일반적으로 이런 종류의 일에 대한 바보입니다. 이 경우에는 클래스가 존재하지만 다른 라이브러리 (나는 Context을 호출하는 httpclient라고 생각합니다)가 컴파일되지 않은 메서드가 없습니다.

+0

예 내 httpclient는 JDK1.5에 대한 것이며 httpcore는 JDK1.3에 대한 것입니다. 나는 JDK1.5에서 httpcore를 얻으려고했지만 어떤 것도 찾을 수 없었고 더 낮은 버전의 httpclient를 사용하면 더 많은 오류가 발생한다. –

+0

이렇게 생성자를 호출하려고했을 때 HttpContext localContext = new BasicHttpContext(); 그것은 말합니다 : - org.apache.http.protocol.BasicHttpContext 유형의 생성자()와 일치하는 항목이 없습니다. 확실하게 기존 jar와 충돌합니다. rootcause쪽으로 돌진하고 수정합니다. –

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html httpcore 4.0을 httpcore 4.1로 바꾼다면 괜찮을 것 같습니다. – Malaxeur

관련 문제