尝试使用JSON简单解析JSON时的NoClassDefFoundError

时间:2014-06-05 16:39:58

标签: java json classnotfoundexception json-simple

我使用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

3 个答案:

答案 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->选择然后点击确定。