HttpClient NoClassDefFoundError

新手上路,请多包涵

我正在尝试从 HttpClient 4.0.1 运行示例应用程序。它是示例部分中的文件 ClientMultiThreadedExecution.java。我将这些文件放入类路径中: apache-mime4j-0.6.jarcommons-codec-1.3.jar ; commons-logging-1.1.1.jar ; httpclient-4.0.1.jar ; httpcore-4.0.1.jar ; httpmime-4.0.1.jar 文件编译正确。在运行时我收到以下错误:

 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

我缺少参考吗?这似乎是一个类路径错误,但我不知道要包含哪个 jar 文件?预先感谢您的帮助。

原文由 user389753 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 815
2 个回答

此异常表明提到的类在 运行时 类路径中丢失。

有多种方法可以指定运行时类路径,具体取决于您执行程序的方式。由于一个体面的 IDE 从您手中透明地获取这一切,我敢打赌您正在命令提示符下运行它。

如果您通过 java.exe -jar 或双击该文件将其作为 JAR 文件运行,则需要在 Class-Path 的 JAR 条目中指定类路径 —a59a3e09162f51951-3d MANIFEST.MF 文件。请注意,无论何时执行 JAR,都会 忽略 %CLASSPATH% 环境变量和 -cp-classpath 参数。

如果您通过 java.exe 将其作为“普通”Java 应用程序运行,则需要在 -cp-classpath 参数中指定它请注意,无论何时使用此参数,都会 忽略 %CLASSPATH% 环境变量。

无论哪种方式,类路径都应该存在一个(半)冒号分隔的 JAR 文件路径字符串(绝对路径或相对于当前工作目录)。例如

java -cp .;/path/to/file1.jar;/path/to/file2.jar com.example.MyClass

(如果您使用的是 Unix/Linux,请使用冒号而不是分号作为路径分隔符)

原文由 BalusC 发布,翻译遵循 CC BY-SA 2.5 许可协议

该类在 httpclient-4.0.1.jar 中(我刚刚下载它以确保)所以我怀疑你没有把它正确地放在类路径中。

你是如何编译和运行你的代码的?

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题