iappmaker
iappmaker

Reputation: 3005

Error in httpclient

I am new to httpclient class. I am getting NoClassDefFoundError error when it executes the line. Any clue on this ?

HttpClient client = new HttpClient();

Java Code

import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.HostConfiguration;

import org.apache.commons.httpclient.protocol.Protocol;

import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;

public class Client {   
    public static void main(String args[]) {

    HttpClient client = new HttpClient();
    client.getParams().setParameter("http.useragent", "Test Client");
    client.getParams().setParameter("http.connection.timeout",new Integer(5000));

    GetMethod method  = new GetMethod();
    FileOutputStream fos = null;

    try {

  method.setURI(new URI("http://www.google.com", true));
  int returnCode = client.executeMethod(method);

  if(returnCode != HttpStatus.SC_OK) {
    System.err.println(
          "Unable to fetch default page, status code: " + returnCode);
      }

      System.err.println(method.getResponseBodyAsString());

      method.setURI(new URI("http://www.google.com/images/logo.gif", true));
      returnCode = client.executeMethod(method);

      if(returnCode != HttpStatus.SC_OK) {
        System.err.println("Unable to fetch image, status code: " + returnCode);
      }

      byte[] imageData = method.getResponseBody();
      fos = new FileOutputStream(new File("google.gif"));
      fos.write(imageData);

      HostConfiguration hostConfig = new HostConfiguration();
      hostConfig.setHost("www.yahoo.com", null, 80, Protocol.getProtocol("http"));

      method.setURI(new URI("/", true));

      client.executeMethod(hostConfig, method);

      System.err.println(method.getResponseBodyAsString());

    } catch (HttpException he) {
      System.err.println(he);
    } catch (IOException ie) {
      System.err.println(ie);
    } finally {
      method.releaseConnection();
      if(fos != null) try { fos.close(); } catch (Exception fe) {}
    }

  }
}

Error Log

Exception in thread "main" java.lang.NoClassDefFoundError:  
org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
at Client.main(Client.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more

Upvotes: 0

Views: 3041

Answers (2)

Keerthivasan
Keerthivasan

Reputation: 12890

Add org-apache-commons-logging.jar to the classpath. You can download it from this link

Upvotes: 1

Zavior
Zavior

Reputation: 6462

You need to include the library that provides the missing class to your application class path. If you are using maven, add it as dependency in the pom, if using eclipse, add external library.. google is your friend.

Upvotes: 0

Related Questions