I use JSON simple to parse JSON and I get NoClassDefFoundError
when trying to create JSONParser
object.
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
...
JSONParser parser = new JSONParser();
I compile program with command:
javac MyProgram.java -cp json-simple-1.1.1.jar
And it compiles fine. But when I execute program with this command:
java MyProgram
I get NoClassDefFoundError
What am I doing wrong?
EDIT:
Full error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/JSONParser
at getNotesFromNoter.sendPost(getNotesFromNoter.java:53)
at getNotesFromNoter.main(getNotesFromNoter.java:14)
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.JSONParser
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
You're not including the Simple JSON jar file in your classpath when running. You want:
// Unix
java -cp .:json-simple-1.1.1.jar MyProgram
// Windows
java -cp .;json-simple-1.1.1.jar MyProgram
(The :
or ;
is the path separator for the relevant operating system.)
When you compile Java and specify a classpath, that's just telling the compiler about the classes to compile against - it doesn't include the library in the result of the compilation, so you still need to specify the classpath in order to run the code, too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With