2011-01-16 31 views
7

Tôi cố gắng đọc tệp JSON bằng Java. Mã này là:Đọc lỗi tệp JSON

public static void main(String[] args) throws Exception { 
    InputStream is = new FileInputStream("j.txt"); 
    String jsonTxt = IOUtils.toString(is); 

    JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 

    JSONObject routes = json.getJSONObject("routes"); 
    JSONObject legs = routes.getJSONObject("legs"); 
    JSONObject distance = legs.getJSONObject("distance"); 
    String dist = distance.getString("text"); 
} 

Và dòng JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); làm cho một lỗi:

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:632) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
    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:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at antmedic.algorithm.SimpleParser.main(SimpleParser.java:24) 
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:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    ... 13 more 
Java Result: 1 

tôi sẽ biết ơn để giải quyết vấn đề này.

+0

CLASSPATH của bạn không đúng. – Pointy

Trả lời

5

Âm thanh như bạn không có commons apache jar tập tin trong bạn đường dẫn lớp

+0

Cách giải quyết vấn đề này? Tôi sử dụng NetBeans trong Windows – Devel

+0

Đó là một câu hỏi mơ hồ bởi vì tôi không chắc chắn cách bạn đã thiết lập dự án của mình. Nhưng giả sử nó chỉ là một dự án java đơn giản, hãy tìm tệp jar bị thiếu trực tuyến và sau đó thêm nó vào đường dẫn lớp của bạn trong netbeans. Tôi không sử dụng netbeans vì vậy có thể ai đó khác có thể giúp bạn. –

+1

Tôi nghĩ rằng tôi đã làm điều đó - tôi đã thêm tệp commons-io-2.0.1.jar làm thư viện vào dự án của mình. Tôi có phải thêm gì nữa không? – Devel

1

Bạn đang thiếu một số phụ thuộc jar chứa lớp org.apache.commons.lang.exception.NestableRuntimeExceptio. Tìm trên internet để tìm lớp này và thêm bình này vào đường dẫn lớp của bạn (trong trường hợp này là Apache Common Lang)

12

Phiên bản mới nhất của Commons Lang (hiện tại 3.1) có tên gói là org.apache.commons.lang3 thay vì org.apache.commons.lang. Đối với tên gói sau (như trong trường hợp của bạn), bạn nên tải xuống phiên bản 2.6 của Commons Lang.

+0

Cảm ơn. Tôi đã sử dụng phiên bản mới nhất tức là 3.1 và đã nhận được lỗi này –

+0

+1 Tuyệt vời, tôi đã thử với 3.1 và nhận được lỗi tương tự. Cảm ơn câu trả lời tuyệt vời này. – user75ponic

0

Bạn có thể cập nhật tệp pom.xml maven của mình bằng cách này. Tôi phải chỉ định 2.3 cho phiên bản để tải xuống.

<dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.3</version> 
    </dependency> 
Các vấn đề liên quan