1

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 でも試してみましたが、さまざまなエラーが発生します。たぶんバージョンの問題だと思います。

このライブラリで簡単な例をコンパイルして実行するにはどうすればよいですか?

クレイジーな依存関係のないより良いライブラリがあれば、それについて聞きたいです。Douglas Crockford の JSON-Java を試しましたが、同様の問題がありました。

Apache 2、MIT などのリベラルなライセンスが必要です。

4

2 に答える 2

3

あなたが求める答えは、POM ファイルにあります https://repository.sonatype.org/service/local/repositories/central-proxy/content/net/sf/json-lib/json-lib/2.4/json-lib -2.4.pom

次の依存関係が必要です。

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)

プロジェクトの Web サイト (http://json-lib.sourceforge.net/) にも、これらの要件がリストされています。

commons-lang-2.6 は json-lib 2.4 で動作する可能性が非常に高いですが、commons-lang-3.x で同じことを保証することはできません。

于 2012-01-26T15:43:18.367 に答える
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"}
$
于 2012-01-26T02:21:47.513 に答える