2

私はJavaの世界にとても慣れていません。Json lib を追加してプログラムをコンパイルしたいと考えています。ここからファイルをダウンロードしました。

プログラムをコンパイルしようとしたとき

  javac -classpath json.jar MyClassName.java

エラーが発生します:

Note: JsonSimpleExample.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

そして、私が実行しようとしたとき:

java MyClassName

私は得ています:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject
    at MyClassName.main(MyClassName.java:9)
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

どこで間違いを犯していますか?

4

4 に答える 4

6

-classpathで実行する場合も使用する必要がありjavaます。

java -classpath json.jar MyClassName
于 2012-10-03T10:30:03.880 に答える
2

あなたは2つの間違いを犯しています:

  1. コンパイラから得られるメッセージはメモであり、コンパイル エラーではありません。指示に従って詳細を取得します
  2. アプリの実行時にクラスパスを設定するのを忘れます:

    java -classpath json.jar;. MyClassName
    

(Windowsを使用していて、を含むディレクトリにいると仮定しますMyClassName.class)。Unix を使用している場合は、 を に置き換え;ます:

クラスをデフォルトのルートパッケージに入れるのは悪い習慣であることに注意してください。

于 2012-10-03T10:32:05.523 に答える
1

エラーの理由は、コンパイル時にクラスが存在していたため、アプリケーションを正常にコンパイルして正常にリンクしましたが、実行時には使用できませんでした。

java -classpath json.jar MyClassName (or)

java -cp json.jar MyClassName
于 2012-10-03T10:34:48.223 に答える
0

最初の出力は、チェックされていないコード (生のコレクションなど) の使用に関する Java コンパイラからの警告です。クラス ファイルは正常に生成されます。

これらの警告を修正したい場合は、-Xlintコマンド ライン スイッチを使用してコンパイルし、チェックされていない/安全でない警告を修正/抑制することができます。

于 2012-10-03T10:31:55.197 に答える