2012-10-03 157 views
2

我對Java世界很陌生。我想添加Json庫來編譯我的程序。我從here下載了該文件。將json jar添加到classpath java

當我試圖用

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 

我在哪裏犯錯?

+1

你的第一個'錯誤'只是一個警告,而不是一個錯誤。 –

回答

6

java一起運行時,您也必須使用-classpath

java -classpath json.jar MyClassName 
0

第一個輸出是Java編譯器關於使用未經檢查的代碼(如原始集合)的警告。類文件已成功生成。

如果您想修復這些警告,那麼您可以使用-Xlint命令行開關進行編譯,並修復/禁止未檢查/不安全的警告。

2

你讓兩個錯誤:

  1. 您從編譯器得到的消息是一個音符,而不是編譯錯誤。按照說明來獲得細節
  2. 運行應用程序時,你忘了設置類路徑:

    java -classpath json.jar;. MyClassName 
    

(假設你使用的是Windows,你在包含MyClassName.class的目錄裏)。如果您使用的是Unix,請將;替換爲:

請注意,將類放入默認的根包中是不好的做法。

+0

'請注意,將類放在默認的根包中是不好的做法。如果是的話,我需要做什麼? – sriram

+1

把你的課程放在一個明確定義的包中。閱讀http://docs.oracle.com/javase/tutorial/java/package/index.html –

1

錯誤的原因是,該類在編譯時存在,讓我們的應用程序成功編譯併成功鏈接,但在運行時不可用。

java -classpath json.jar MyClassName (or) 

java -cp json.jar MyClassName 
相關問題