创建DefaultHttpClient会导致NoClassDefFoundError

时间:2013-06-10 17:59:43

标签: noclassdeffounderror classnotfoundexception apache-httpclient-4.x apache-httpcomponents

我正在尝试使用Apache DefaultHttpClient来执行JSON POST请求,当我尝试实例化它时,它会给我一个NoClassDefFound错误。

HttpClient client = new DefaultHttpClient();

我在buildpath中包含了以下jar,

的HttpClient-4.2.5.jar 的HttpCore-4.2-alpha2.jar JSON-简单1.1.1.jar 流利-HC-4.2.5.jar HttpClient的缓存-4.2.5.jar httpmime-4.2.5.jar org.apache.httpcomponents.httpclient_4.2.5.jar

当我尝试按如下方式导入DefaultHttpClient时,我没有问题

   import org.apache.http.impl.client.DefaultHttpClient;

但只有当我尝试按上面提到的那样制作它的实例时。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:187)
    at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:146)
    at AtlasService.main(AtlasService.java:53)
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)
    ... 3 more

1 个答案:

答案 0 :(得分:2)

解答:我刚刚解决了这个问题,所以我只是回答帮助未来的灵魂。我使用的是http-core 4.2-alpha jar,其余的是使用4.2.5(http-client,http-client-cache,http-mime等)。我将http-core-4.2-alpha jar更新为http-core-4.2.5后,问题就消失了。你可以在网上找到maven repos中的jar。