我使用JSON简单来解析JSON,并在尝试创建NoClassDefFoundError
对象时得到JSONParser
。
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.JSONParser;
...
JSONParser parser = new JSONParser();
我用命令编译程序:
javac MyProgram.java -cp json-simple-1.1.1.jar
它编译得很好。 但是当我用这个命令执行程序时:
java MyProgram
我得到NoClassDefFoundError
我做错了什么?
修改:
完整错误:
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
答案 0 :(得分:5)
运行时,您的类路径中没有包含Simple JSON jar文件。你想要:
// Unix
java -cp .:json-simple-1.1.1.jar MyProgram
// Windows
java -cp .;json-simple-1.1.1.jar MyProgram
(:
或;
是相关操作系统的路径分隔符。)
当您编译Java并指定一个类路径时,它只是告诉编译器有关要编译的类 - 它不会在结果中包含该库编译,所以你仍然需要指定类路径才能运行代码。
答案 1 :(得分:1)
您是否使用-cp json-simple-1.1.1.jar编译代码?
前段时间,我制作了一个Test.java,编译为:
javac -cp json-simple-1.1.1.jar Test.java
然后:
java -cp .:json-simple-1.1.1.jar Test
它跑得很好。
答案 2 :(得分:0)
如果您使用的是IDE,请从this link下载jar。在netbeans和eclipse中,您可以通过右键单击项目添加此jar,然后选择properties-> libraries->添加jar->选择然后点击确定。