7

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

  1. 我刚刚从http://hc.apache.org/downloads.cgi下载了“Commons HttpClient 3.1 (legacy)” 。
  2. 我使用 IDE NetBeans 创建了新应用程序。
  3. 我专注于 Projects -> Libraries -> Add JAR/Folder 并在这里添加了 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***
    

怎么了?

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

4

4 回答 4

15

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

于 2009-11-21T19:11:10.713 回答
5

您需要依赖项。如果你使用 Maven,他们会自己获取。既然你不是,你必须去下载 commons-logging(也许还有其他人)并把它们扔进去。

于 2009-11-21T19:07:46.663 回答
2

我想向任何来到这里的人更新一个事实,即所有答案,尤其是 RocketSurgeon 的答案,都以同样的方式帮助我解决了我的问题。在我的问题得到解决之前,我必须下载 commons httpclient(旧版 3.1)、日志记录和编解码器。

同样值得注意的是;使用 Eclipse 我必须提取 .jar 文件并使用“添加库”将它们导入 Buildpath。仅添加 .zip 文件不起作用。

于 2011-01-26T05:19:43.757 回答
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% 左右,但从不在两者之间

于 2009-11-21T21:03:51.313 回答