2012-03-12 17 views
31

मैं वेब सेवा से JSON प्रतिक्रिया प्राप्त करने के लिए जीडब्ल्यूटी सर्वलेट से अनुरोध प्राप्त करने का प्रयास कर रहा हूं।java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient

public String getQueData() throws IllegalArgumentException { 
    String message = null; 
    try {   
     HttpClient httpclient = new DefaultHttpClient(); 
     JSONParser parser = new JSONParser(); 

     String url = "working - url"; 
     HttpResponse response = null; 
     response = httpclient.execute(new HttpGet(url)); 

     JSONObject json_data = null; 
     json_data = (JSONObject)parser.parse(EntityUtils.toString(response.getEntity())); 
     JSONArray results = (JSONArray)json_data.get("result"); 
     for (Object queid : results) { 
      message = message.concat((String) ((JSONObject)queid).get("id")); 
      message = message.concat("\t"); 
      message = message.concat((String) ((JSONObject)queid).get("owner")); 
      message = message.concat("\n"); 
     } 
     } catch (Exception e) { 
    message = e.toString(); 
    } 
    return message; 
} 

एक GWT सर्वलेट से अनुरोध प्राप्त करने की कोशिश कर पर निम्नलिखित अपवाद हो रही है: के बाद मेरी सर्वलेट में कोड है।

java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 
    at java.lang.Class.getConstructor0(Class.java:2699) 
    at java.lang.Class.newInstance0(Class.java:326) 
    at java.lang.Class.newInstance(Class.java:308) 
    at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) 
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:362) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.HttpClient 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

इस अपवाद का संभावित कारण क्या हो सकता है? इसे कैसे हटाया जा सकता है?

मैं ubuntu 10.04 पर jdk1.6.0_30 का उपयोग कर रहा हूं।

उत्तर

23

What could be the possible cause of this exception?

आपके कक्षा पथ में उचित जार नहीं हो सकता है।

How it could be removed?

अपने क्लास पथ में HTTPClient जार डालने से। यदि यह एक webapp है, WEB-INF/lib में जार कॉपी अगर यह स्टैंडअलोन है, सुनिश्चित करें कि आप वर्ग पथ में इस जार है या स्पष्ट रूप से -cp विकल्प

doc के रूप में कहते हैं का उपयोग कर सेट बनाने के लिए,

Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found.

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

+0

इसके लिए धन्यवाद, लेकिन अब मुझे यह त्रुटि मिल रही है com.google.gwt.user.server.rpc.UnexpectedException –

+0

मुझे नए अपवाद के बारे में अनिश्चितता है, मुझे NoClassDefFound का कारण बनने के बारे में कुछ नहीं पता था, और मैंने इसे साझा किया आप। – Nishant

+0

आपकी प्रतिक्रिया के लिए धन्यवाद –

42

इसकी तो एक Maven परियोजना, अपने पोम फ़ाइल

<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.3.4</version> 
    </dependency> 
+3

और ग्रैडल के लिए: 'संकलित समूह:' org.apache.httpcomponents ', नाम:' httpclient ', संस्करण:' 4.5.2'' – gudthing

1

मैं खुद के लिए इस मुद्दे को हल में नीचे निर्भरता जोड़ने के लिए, मैंने पाया अन्य निर्भर जार फ़ाइलों के विभिन्न संस्करण के साथ http-ग्राहक की दो फ़ाइलों था है। तो वहाँ संस्करण पुस्तकालयों के बीच गिर सकता है कर रहे थे तो यह ज़िप फ़ाइल की lib फ़ोल्डर से सभी पुराने/पिछले पुस्तकालयों फ़ाइलें और फिर से जोड़ जार फ़ाइलों को हटा फ़ाइलें हैं:

Donwload Zip file from here

+0

मेरे लिए काम नहीं किया .. डाउनलोड करने का कोई लाभ नहीं। – Madhab452

2

मैं एक ही मुद्दे का सामना करना पड़ रहा था। मेरे मामले में, मेरे पास पुराने संस्करण के साथ httpclient की निर्भरता थी, जबकि प्रेषक को httpclient का एक नया संस्करण आवश्यक था। बस सुनिश्चित करें कि httpclient का संस्करण आपकी निर्भरताओं में सही है और यह ठीक काम करेगा।

+1

जीवन बचतकर्ता .. httpclient को 4.3.5 से 4.5.3 में बदल दिया। ठीक काम किया – user3014595

1

यह समस्या तब होती है जब विभिन्न जार संस्करण होते हैं। विशेष रूप से httpcore और httpclient के संस्करण। Httpcore और httpclient के समान संस्करणों का उपयोग करें।

संबंधित मुद्दे