2009-10-24 30 views
9

Xin chào Tôi đang cố gắng để đưa lên một webapp nhỏ nhưng tôi nhận được lỗi trên. Dưới đây là mã của tôijava.lang.NoSuchMethodError: org.apache.http.protocol.BasicHttpContext: phương thức <init>() V không tìm thấy

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

Tôi đang sử dụng httpclient-4.0-beta2.jar và httpcore-4.0.1.jar. Có vẻ như BasicHttpContext đang nhận được mâu thuẫn với một số lọ khác trong ứng dụng của tôi, nhưng tôi không thể tìm ra. Bất kỳ đầu mối sẽ được đánh giá cao.

+0

nó có thể giúp liệt kê các classpath mà bạn đang chạy mã của bạn. có thể có một vấn đề tinh vi ngăn cản việc tải tệp jar dự định ... – atk

+1

Tôi đã thử với một chương trình java độc lập và chỉ thêm 2 lọ đó và nó hoạt động tốt. Classpath của ứng dụng ban đầu của tôi có hơn 50 lọ, tôi không chắc cái nào là mâu thuẫn. –

+1

Nếu bạn đang sử dụng Eclipse IDE goto xem Java Broswing (cửa sổ -> Hiển thị xem -> Java Broswing) sau đó duyệt tệp Jar, bạn sẽ có thể biết về các chi tiết của lớp/phương pháp/biến vv – Narayan

Trả lời

9

Dường như bạn có tệp jar có phiên bản cũ/mới hơn là BasicHttpContext. Nếu có xung đột trực tiếp, bạn sẽ nhận được ClassNotFoundException. ClassLoaders thường giật về loại điều này. Trong trường hợp này, lớp tồn tại tuy nhiên không có phương thức mà một thư viện khác (tôi tin rằng đó là httpclient gọi đó là Context) đã được biên dịch lại.

+0

Có nó có vẻ như httpclient của tôi là dành cho JDK1.5 và httpcore là dành cho JDK1.3. Tôi đã cố gắng để có được httpcore cho JDK1.5 nhưng không thể tìm thấy bất kỳ và sử dụng phiên bản thấp hơn của httpclient ném nhiều lỗi hơn. –

+0

Khi tôi cố gọi hàm khởi tạo như thế này HttpContext localContext = new BasicHttpContext(); nó nói: - Không tìm thấy kết quả phù hợp cho hàm tạo() trong loại org.apache.http.protocol.BasicHttpContext Chắc chắn nó xung đột với một cái lọ hiện có, tôi đang nhích về phía gốc và sửa lỗi. –

+4

http://hc.apache.org/httpcomponents-core/httpcore/apidocs/org/apache/http/protocol/BasicHttpContext.html Có vẻ như nếu bạn thay thế httpcore 4.0 bằng httpcore 4.1, bạn sẽ ổn. – Malaxeur

Các vấn đề liên quan