Apache HttpClient抛出NoClassDefFoundError

时间:2009-11-21 19:05:27

标签: java httpclient

我有:ubuntu-9.10-desktop-amd64 + NetBeans6.7.1

  1. 我刚从http://hc.apache.org/downloads.cgi下载了“Commons HttpClient 3.1(legacy)”。
  2. 我使用IDE NetBeans创建了新的应用程序。
  3. 我专注于项目 - >图书馆 - >添加JAR /文件夹,这里添加了commons-httpclient-3.1.jar
  4. 到现在为止,我可以写“import org.apache.commons.httpclient。*;”这没关系。
  5. 但是,如果我尝试添加包含以下内容的任何语句:

    public static void main(String[] args) {
        HttpClient client = new HttpClient();
    }
    
  6. 编译得很好。

  7. 但是当我运行这个项目时,我收到以下错误:

    ***Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
        at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
        at SimplestAppl.Main.main(Main.java:22)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
        ... 2 more
    Java Result: 1***
    
  8. 有什么问题?

    我尝试下载“HttpClient 4.0(GA)”。但结果是一样的。

4 个答案:

答案 0 :(得分:14)

您所遇到的只是缺少依赖性。 Java开发人员习惯于自己收集依赖项,尤其是。当涉及到日志框架时。 下载commons-logging并将其添加到类路径中。与httpclient所需的所有其他依赖项一样。

答案 1 :(得分:5)

您需要依赖项。如果你使用了maven,他们会自己取而代之。既然你不是,那么你必须下载公共记录(或许是其他人)并将它们扔进去。

答案 2 :(得分:2)

我想更新任何来到这里的人,所有答案,尤其是RocketSurgeon,都帮助我解决了我的问题。在我的问题得到解决之前,我不得不下载公共httpclient(遗留3.1),日志记录和编解码器。

另外值得注意;使用Eclipse我必须提取.jar文件并使用“add library”将它们导入Buildpath。仅仅添加.zip文件无效。

答案 3 :(得分:1)

如果您不想使用Maven,那么

- build and launch, look at missing dependencies
- identify vendor, fetch the jar to resolve dependencies
- rinse/repeat until you have all dependencies satisfied
- done

无论如何,你永远不会确定是否所有依赖都是100%提供的。它通常在150%或99%左右,但从不介于

之间