有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Gson Android和异步任务

所以不久前我有一个关于GSON的问题,现在我被告知使用一种叫做AsyncTask的东西

尽管关于如何使用它的描述非常简短AsyncTask Doc

我设法让它发挥了作用

这是我的异步类:

public class JsonCollector extends AsyncTask<URL, integer, String> {
private String finalString;
public JsonCollector(){

}
public String test(){
    URL url = null;
    try {
        url = new URL("http://api.heroesofnewerth.com/player_statistics/ranked/nickname/Hieratic/?token=0CZGH8ZI7UR8J2GN");
    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    BufferedReader reader = null;
    String x = "";
    try {
        reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
        for (String line; (line = reader.readLine()) != null;) {
            System.out.println(line);
            x = line;
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally{
        if (reader !=null) try{reader.close();} catch (IOException ignore) {
        }{}
    }
    this.finalString = x;
    return x;
}
@Override
protected String doInBackground(URL... params) {
    JsonElement root = new JsonParser().parse(test());

    finalString = root.getAsJsonObject().get("rnk_wins").toString();
    return "";
}
public String getFinalString(){
    return finalString;
}

}

现在这一切都很好,我收到了一个GSON错误:

  05-15 19:51:05.091: E/AndroidRuntime(1832): FATAL EXCEPTION: AsyncTask #1
05-15 19:51:05.091: E/AndroidRuntime(1832): java.lang.RuntimeException: An error occured while executing doInBackground()
05-15 19:51:05.091: E/AndroidRuntime(1832):     at 安卓.os.AsyncTask$3.done(AsyncTask.java:299)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at 安卓.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.lang.Thread.run(Thread.java:856)
05-15 19:51:05.091: E/AndroidRuntime(1832): Caused by: java.lang.NoClassDefFoundError: com.google.gson.JsonParser
05-15 19:51:05.091: E/AndroidRuntime(1832):     at logic.JsonCollector.doInBackground(JsonCollector.java:47)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at logic.JsonCollector.doInBackground(JsonCollector.java:1)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at 安卓.os.AsyncTask$2.call(AsyncTask.java:287)
05-15 19:51:05.091: E/AndroidRuntime(1832):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-15 19:51:05.091: E/AndroidRuntime(1832):     ... 4 more

请注意,我已将库添加到我的项目中:

enter image description here

有人能告诉我为什么我找不到这个班吗


共 (1) 个答案

  1. # 1 楼答案

    Referenced Libraries库下有它是你的问题

    您需要做的是在项目文件夹中创建一个\libs,并将jar文件放在那里

    这将导致将该库放在项目的Android Dependecies文件夹下(您可能需要清除项目/关闭并重新打开Eclipse)

    更新:

    这个屏幕截图应该解释,你应该把你的项目用过的.jar文件放在哪里

    enter image description here