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

実行時にクラスパスにシンプルな JSON jar ファイルを含めていません。あなたがしたい:

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

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

(:または;は、関連するオペレーティング システムのパス区切り文字です。)

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 を追加し、[OK] をクリックします。

于 2015-01-28T18:25:43.697 に答える