4

我使用简单的 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
4

3 回答 3

6

运行时,您的类路径中没有包含 Simple JSON jar 文件。你要:

// Unix
java -cp .:json-simple-1.1.1.jar MyProgram

// Windows
java -cp .;json-simple-1.1.1.jar MyProgram

:or;是相关操作系统的路径分隔符。)

当您编译 Java 并指定类路径时,这只是告诉编译器要编译的类-它不包括编译结果中的库,因此您仍然需要指定类路径才能运行代码,也。

于 2014-06-05T16:42:36.407 回答
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

它运行完美。

于 2017-06-30T12:57:39.073 回答
0

如果您使用的是 IDE,请从此链接下载 jar 。在 netbeans 和 eclipse 中,您可以通过右键单击项目然后选择属性->库->添加 jar->选择 jar 并单击确定来添加此 jar。

于 2015-01-28T18:25:43.697 回答