1

我正在尝试按照本教程在 Java 中解析一些 JSON 。因为它除了导入它之外没有提到任何org.apache.commons.io.IOUtils其他内容,我认为它用于将 a 转换InputStream为 aString.我有我自己的代码,所以我省略了它。这是我的代码:

import java.io.*;
import java.io.InputStream;
import java.net.*;
import java.util.Scanner;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

public class Net {
    static String returnParsedIp() throws UnsupportedEncodingException,    MalformedURLException, IOException {
    String url = "http://httpbin.org/ip";
    URLConnection connection = new URL(url).openConnection();
    connection.setRequestProperty("Accept-Charset", "UTF-8");
    InputStream response = connection.getInputStream();
    String responseString = new Scanner(response,"UTF-8").useDelimiter("\\A").next();
    //return responseString;

    JSONObject json = (JSONObject) JSONSerializer.toJSON(responseString);
    String Ip = json.getString("origin");

    return Ip;
}
}

然后我从我的主类调用该方法:

public class DDNS {

    public static void main(String[] args) throws Exception {
        String Ip = Net.returnParsedIp();
        System.out.println(Ip);
    }   
}

但是,它会引发以下错误:

run:
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:800)
    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:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at ddns.Net.returnParsedIp(Net.java:19)
    at ddns.DDNS.main(DDNS.java:6)
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:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 14 more
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

任何帮助表示赞赏。

4

2 回答 2

1

要么您的 CLASSPATH 中没有 Apache Commons lang 和 io JAR,要么您的版本错误。

Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException

这是 Java 101。您需要 CLASSPATH 中的所有依赖项才能编译和运行。

于 2014-06-17T12:44:23.093 回答
0

您必须在您的项目中添加 commons-lang jar

于 2014-06-17T12:45:15.660 回答