Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient

I am trying to make a get request from the GWT servlet to get JSON response from a web service. Following is the code in my servlet :

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

Getting the following exception on trying to make get request from a GWT servlet.

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) 

What could be the possible cause of this exception? How it could be removed?

I am using jdk1.6.0_30 on ubuntu 10.04.

like image 490
Saurabh Saxena Avatar asked Mar 12 '12 08:03

Saurabh Saxena


People also ask

How do you fix No Class Def Found error?

lang. NoClassDefFoundError, which means the Class Loader file responsible for dynamically loading classes can not find the . class file. So to remove this error, you should set your classpath to the location where your Class Loader is present.

What is NTCredentials?

@Contract(threading=IMMUTABLE) public class NTCredentials extends Object implements Credentials, Serializable. Microsoft Windows specific Credentials representation that includes Windows specific attributes such as name of the domain the user belongs to. Since: 4.0 See Also: Serialized Form.

What is the use of HttpComponentsClientHttpRequestFactory?

HttpComponentsClientHttpRequestFactory is ClientHttpRequestFactory implementation that uses Apache HttpComponents HttpClient to create requests. We have used @Scheduled annotation in httpClient configuration. To support this, we have to add support of scheduled execution of thread.


2 Answers

If its a maven project, add the below dependency in your pom file

    <dependency>         <groupId>org.apache.httpcomponents</groupId>         <artifactId>httpclient</artifactId>         <version>4.3.4</version>     </dependency> 
like image 159
Balaji Katika Avatar answered Sep 20 '22 05:09

Balaji Katika


What could be the possible cause of this exception?

You may not have appropriate Jar in your class path.

How it could be removed?

By putting HTTPClient jar in your class path. If it's a webapp, copy Jar into WEB-INF/lib if it's standalone, make sure you have this jar in class path or explicitly set using -cp option

as the doc says,

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.

Edit:
If you are using a dependency management like Maven/Gradle (see the answer below) or SBT please use it to bring the httpclient jar for you.

like image 23
Nishant Avatar answered Sep 23 '22 05:09

Nishant