2011-12-02 90 views
1

我想解析Java中的JSON字符串,但我不知道如何! 我使用的LIB-JSON現在:在Java中解析JSON字符串

import net.sf.json.*; 

String jsonStr = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; 
JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(jsonStr); // this line crashes 

我沒有得到任何編譯錯誤,但是當我運行它,它說:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at ircbot.plugins.SiteTitle.<init>(SiteTitle.java:28) 
    at ircbot.Main.main(Main.java:10) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 14 more 
Java Result: 1 
BUILD SUCCESSFUL (total time: 0 seconds) 

這聽起來像我丟失了一些依賴關係,但我不知道如何找出是否或哪一個!

在此先感謝!

回答

2

好像你還沒有進口類「org.apache.commons.lang.exception.NestableRuntimeException」需要的jar文件

有跡象表明,我們在Java程序中使用,其中有許多類不來Java的。所以我們需要爲它們添加合適的Jar文件。

+0

但我確實有apache commons lib!但是現在當我看到裏面沒有子包lang.exception ...我找到了org.apache.commons.lang3,但仍然沒有例外! – oskob

+0

@oskob嘗試此鏈接,如果您搜索,那麼會看到這個jar文件包含您正在尋找的類。 http://www.java2s.com/Code/Jar/ABC/Downloadcommonslang24jar.htm – gprathour

+0

該鏈接看起來破碎:P但是,它似乎我使用了錯誤的版本,我試過2.x而不是3.x,它的工作! – oskob

0

你的JSON字符串也無效,這將有效的JSON,

{"string": "JSON","integer": "1","double": "2.0","boolean": "true" } 
2

我建議grepcode 只要輸入類的名字,你會得到罐子的已知版本的列表

例子:here

0

這些都是依賴 -

  1. 的Jakarta Commons琅2.5
  2. 的Jakarta Commons-BeanUtils的1.8.0
  3. 的Jakarta Commons的集合3.2.1
  4. 雅加達共享記錄1.1.1
  5. ezmorph 1.0.6

你確定你在類路徑中添加了所有這些元素嗎?

+0

有沒有簡單的方法來找到這些依賴關係?它似乎只是JSON解析的很多庫:S – oskob

+0

@oskob我個人使用谷歌gson http://code.google.com/p/google-gson/。 Apache庫就像這樣,很多依賴。 – Rifat