无法使用Json-simple jar文件执行Java程序

时间:2017-04-02 20:11:19

标签: java json macos terminal

我正在尝试编写一个将JSON数据写入文件的简单Java程序。我正在使用JSON简单jar文件编译它,但我收到一个错误。以下是我的所作所为:

//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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);