2012-06-26 50 views
0

我有一小段代碼將XML解析爲JSON。它工作正常,直到我引入XMLSerializer來獲取JSON。XMLSerializer拋出異常

public static String convertXMLFileToString(String fileName) 
{ 
    try{ 
    XMLSerializer xmlSer = new XMLSerializer(); 
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
    InputStream inputStream = new FileInputStream(new File(fileName)); 
    org.w3c.dom.Document doc = documentBuilderFactory.newDocumentBuilder().parse(inputStream); 
    StringWriter stw = new StringWriter(); 
    Transformer serializer = TransformerFactory.newInstance().newTransformer(); 
    serializer.transform(new DOMSource(doc), new StreamResult(stw)); 
    String st = stw.toString(); 
    JSON json = xmlSer.read(st); 
    return stw.toString(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    return null; 
    } 

召喚:

convertXMLFileToString("/home/tom/workspace/xmlToJson/files/input/sample.xml"); 

進出口使用JSON-LIB-2.4及以下進口import net.sf.json.xml.XMLSerializer; ,我得到以下異常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
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) 
at convert.xmlToJson.convertXMLFileToString(xmlToJson.java:27) 
at convert.xmlToJson.main(xmlToJson.java:21) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException 
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) 
... 14 more 

任何想法是怎麼回事?

+0

這是JSON-lib的問題,但我需要的.read()函數沒有在其他庫中實現。 –

回答

2

JSON-lib對其他庫有依賴關係,請參閱http://json-lib.sourceforge.net/

  • Jakarta通用琅2.5
  • 雅加達公地BeanUtils的1.8.0
  • Jakarta通用的集合3.2.1
  • 雅加達共享記錄1.1.1
  • ezmorph 1.0.6

不能說你是否需要所有這些,但你的例外清楚地表明它缺少commons-lang(http://commons.apache.org/lang/)。確保使用版本2.x,而不是較新的3.x.