我正在尝试从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)
我是否缺少参考?似乎是类路径错误,但是我不知道要包含哪个jar文件?预先感谢您的帮助。
此异常表明 运行时 类路径中缺少所提到的类。
有几种方法可以指定运行时类路径,具体取决于您如何执行程序。由于一个不错的IDE透明地从您手中掌握了所有这些功能,因此我敢打赌,您正在命令提示符下运行它。
如果通过java.exe -jar
或双击文件将其作为JAR文件运行,则需要Class-Path
在JAR
MANIFEST.MF
文件的条目中指定类路径。请注意,每次执行JAR时,%CLASSPATH%
环境变量和-cp
和-classpath
参数都会被
忽略 。
如果您通过来将其作为“普通香草”
Java应用程序运行java.exe
,则需要在-cp
或-classpath
参数中指定它。请注意,无论何时使用此参数,%CLASSPATH%
都会
忽略 环境变量。
无论哪种方式,类路径都应存在(半)用逗号分隔的JAR文件路径字符串(绝对路径或相对于当前工作目录的路径)。例如
java -cp。; / path / to / file1.jar; /path/to/file2.jar com.example.MyClass
(如果您使用的是Unix / Linux,请使用冒号而不是分号作为路径分隔符)