我正在尝试使用JSON-lib,但我不能让它在没有NoClassDefFoundError
的情况下运行。这是代码:
import net.sf.json.*;
public class hello {
public static void main(String[] args) {
String settings = "{\"hello\": \"world\"}";
JSONObject obj = (JSONObject)JSONSerializer.toJSON(settings);
System.out.println(obj.toString());
}
}
编译命令:
javac -cp lib/json-lib-2.4-jdk15.jar hello.java
要运行的命令:
java -cp .:lib/json-lib-2.4-jdk15.jar:lib/commons-lang-2.4.jar hello
我也尝试过commons-lang3.3,这给了我不同的错误。我认为这可能是版本的事情。
如何使用此库编译和运行一个简单示例?
如果有一个没有疯狂依赖的更好的库,我很乐意听到它。我尝试过道格拉斯·克罗克福德的JSON-Java,但我遇到了类似的问题。
我需要一些拥有自由许可证的东西,比如Apache 2,麻省理工学院或类似的东西。
答案 0 :(得分:3)
您需要以下依赖项:
commons-beanutils-1.8.0
commons-collections-3.2.1
commons-lang.2.5
commons-logging-1.1.1
ezmorph-1.0.6
可选的
xom.1.1 (if serializing from/to XML)
oro-2.0.8 (if using the jdk13 version of the library)
该项目的网站(http://json-lib.sourceforge.net/)也列出了这些要求。
commons-lang-2.6很可能与json-lib 2.4一起工作但是我不能保证commons-lang-3.x也一样。
答案 1 :(得分:2)
请改为google Gson:
这是一个例子:
import com.google.gson.Gson;
class Foo {
private String hello;
public String toString() {
return "hello='" + hello + "'";
}
}
public class hello {
public static void main(String[] args) {
String text = "{\"hello\": \"world\"}";
Gson gson = new Gson();
Foo foo = gson.fromJson(text, Foo.class);
System.out.println(foo.toString());
System.out.println(gson.toJson(foo));
}
}
瞧!
$ javac -cp lib/gson-2.0.jar hello.java
$ java -cp .:lib/gson-2.0.jar hello
hello='world'
{"hello":"world"}
$