我正在尝试从 HttpClient 4.0.1 运行示例应用程序。它是示例部分中的文件 ClientMultiThreadedExecution.java。我将这些文件放入类路径中: apache-mime4j-0.6.jar
; commons-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 许可协议
此异常表明提到的类在 运行时 类路径中丢失。
有多种方法可以指定运行时类路径,具体取决于您执行程序的方式。由于一个体面的 IDE 从您手中透明地获取这一切,我敢打赌您正在命令提示符下运行它。
如果您通过
java.exe -jar
或双击该文件将其作为 JAR 文件运行,则需要在Class-Path
的 JAR 条目中指定类路径 —a59a3e09162f51951-3dMANIFEST.MF
文件。请注意,无论何时执行 JAR,都会 忽略%CLASSPATH%
环境变量和-cp
和-classpath
参数。如果您通过
java.exe
将其作为“普通”Java 应用程序运行,则需要在-cp
或-classpath
参数中指定它请注意,无论何时使用此参数,都会 忽略%CLASSPATH%
环境变量。无论哪种方式,类路径都应该存在一个(半)冒号分隔的 JAR 文件路径字符串(绝对路径或相对于当前工作目录)。例如
(如果您使用的是 Unix/Linux,请使用冒号而不是分号作为路径分隔符)