HttpClient NoClassDefFoundError

use*_*753 13 java classpath httpclient classnotfound

我试图从HttpClient 4.0.1运行一个示例应用程序.它是示例部分中的ClientMultiThreadedExecution.java文件.我把在classpath这些文件: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)
Run Code Online (Sandbox Code Playgroud)

我错过了参考吗?这似乎是一个类路径错误,但我无法弄清楚要包含哪个jar文件?预先感谢您的帮助.

Jon*_*eet 5

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

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


Bal*_*usC 5

此异常表示运行时类路径中缺少所提到的类.

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

如果您通过java.exe -jar或双击该文件将其作为JAR文件运行,则需要Class-Path在JAR MANIFEST.MF文件的条目中指定类路径.需要注意的是%CLASSPATH%环境变量,-cp并且-classpath参数被忽略,只要你执行一个JAR.

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

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

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

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