2017-04-02 104 views
0

我正在嘗試編寫一個將JSON數據寫入文件的簡單Java程序。我正在用JSON簡單的jar文件編譯它,但是我收到一個錯誤。下面是我做了什麼:無法使用Json簡單jar文件執行Java程序

//JsonSimpleWriteExample.java 

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 

import java.io.FileWriter; 
import java.io.IOException; 

public class JsonSimpleWriteExample { 

public static void main(String[] args) { 

    JSONObject obj = new JSONObject(); 
    obj.put("name", "mkyong.com"); 
    obj.put("age", new Integer(100)); 

    JSONArray list = new JSONArray(); 
    list.add("msg 1"); 
    list.add("msg 2"); 
    list.add("msg 3"); 

    obj.put("messages", list); 

    try (FileWriter file = new FileWriter("f:\\test.json")) { 

     file.write(obj.toJSONString()); 
     file.flush(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    System.out.print(obj); 

    } 

} 

在終端編譯上面的程序,我做的:

javac -cp json-simple-1.1.1.jar JsonSimpleWriteExample.java 

我從網上下載http://www.java2s.com/Code/Jar/j/json-simple.htm

json-simple-1.1.1.jar文件我得到以下錯誤:

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

我正在使用MacOS。任何人都可以幫我弄清楚這個問題。

當我嘗試運行我的類文件,我得到了以下錯誤:

$ java JsonSimpleWriteExample 

錯誤,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/JSONObject 
at JsonSimpleWriteExample.main(JsonSimpleWriteExample.java:11) 
    Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 1 more 
+0

這看起來不像是錯誤,而是警告。錯誤阻止我們編譯,警告通知我們潛在的問題。原始類型是其中之一。您被告知編譯器無法幫助您確保類型安全。但是編譯器應該能夠生成'.class'文件,所以你應該能夠運行這個代碼(並且如果你沒有編譯器的幫助,你可能會面臨一些*例外*)*你需要包含 – Pshemo

+0

在類路徑中的jar使用-cp json-simple .... – efekctive

+0

@efekctive我準備好在創建cass文件時做這件事:'javac -cp json-simple-1.1.1.jar JsonSimpleWriteExample.java' – user2567857

回答

0

當你擁有它,你編譯使用外部jar文件,所以編譯器在編譯期間找到您使用的符號。

javac -cp json-simple-1.1.1.jar JsonSimpleWriteExample.java 

同樣具有在運行時完成:

java JsonSimpleWriteExample -cp ./json-simple-1.1.1.jar 

在你的榜樣,這是輸出:

{"name":"mkyong.com","messages":["msg 1","msg 2","msg 3"],"age":100} 

正如@Pshemo說,那些 「錯誤」 你實際上是警告。你可以看到更多關於未檢查或不安全的操作herehere

0
import org.json.simple.JSONObject; 

JSONObject jsonObject = (JSONObject) yourOrginalObject; 

//code for get all keys from json 
Set<String> keys=jsonObject.keySet(); 

//iterate the keys 

//get values by passing keys 
jsonObject.get(pass individual keys);