Reputation: 3005
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
Reputation: 12890
Add org-apache-commons-logging.jar
to the classpath. You can download it from this link
Upvotes: 1
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