I am trying to run a sample application from HttpClient 4.0.1. It is the file ClientMultiThreadedExecution.java from the examples section. I put in these files in the 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
and the file compiles correctly. At runtime I get the following error:
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)
Am I missing a reference? It seems like a classpath error but I can't figure out which jar file to include? Thank you in advance for your help.
This exception tells that the mentioned class is missing in the runtime classpath.
There are several ways to specify the runtime classpath, depending on how you're executing the program. Since a decent IDE takes this all transparently from your hands, I bet that you're running it in a command prompt.
If you're running it as a JAR file by java.exe -jar
or doubleclicking the file, then you need to specify the classpath in the Class-Path
entry of the JAR's MANIFEST.MF
file. Note that the %CLASSPATH%
environment variable and -cp
and -classpath
arguments are ignored whenever you execute a JAR.
If you're running it as a "plain vanilla" Java application by java.exe
, then you need to specify it in the -cp
or -classpath
argument. Note that whenever you use this argument, the %CLASSPATH%
environment variable is ignored.
Either way, the classpath should exist of a (semi)colonseparated string of paths to JAR files (either absolute paths or relative to current working directory). E.g.
java -cp .;/path/to/file1.jar;/path/to/file2.jar com.example.MyClass
(if you're on Unix/Linux, use colon instead of semicolon as path separator)