我使用 JSON simple 来解析 JSON,并且在尝试创建 JSONParser
对象时得到 NoClassDefFoundError
。
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
最佳答案
运行时,您没有在类路径中包含简单 JSON jar 文件。你想要:
// Unix
java -cp .:json-simple-1.1.1.jar MyProgram
// Windows
java -cp .;json-simple-1.1.1.jar MyProgram
(:
或 ;
是相关操作系统的路径分隔符。)
当您编译 Java 并指定类路径时,这只是告诉编译器要编译的类against - 它不会在 结果 中包含库编译,因此您仍然需要指定类路径才能运行代码。
关于java - 尝试使用 JSON 简单解析 JSON 时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24065685/