2014-02-23 55 views
0

我是新來的HttpClient類。執行該行時,出現NoClassDefFoundError錯誤。任何線索?錯誤的HttpClient

HttpClient client = new HttpClient(); 

Java代碼的

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) {} 
    } 

    } 
} 

錯誤日誌

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 

回答

1

添加org-apache-commons-logging.jar到classpath中。你可以從這個link

下載
0

你需要包括提供缺少的類應用程序類路徑中的庫。如果您正在使用maven,將其添加爲在POM依賴,如果使用Eclipse,添加外部庫..谷歌是你的朋友。