我的Android应用程序停止工作。
package com.example.hay;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.EditText;
public class AsyncLoadData extends AsyncTask<String, Void, String> {
private Context mContext;
private ILoadDataListener mListener;
public AsyncLoadData(Context context, ILoadDataListener listener) {
this.mContext = context;
this.mListener = listener;
}
@Override
protected String doInBackground(String... params) {
try {
String url = params[0];
Document doc;
doc = Jsoup.connect(url).get();
String title = doc.text();
return title;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String result) {
mListener.complete(result);
}
@Override
protected void onPreExecute() {
mListener.loading();
}
public interface ILoadDataListener {
void loading();
void complete(String result);
}
}
看来我的todo在后台方法中有问题。logcat(我不知道如何发布logcat log,所以我会粘贴它):
01-25 20:38:52.449: E/AndroidRuntime(878): FATAL EXCEPTION: AsyncTask #1
01-25 20:38:52.449: E/AndroidRuntime(878): java.lang.RuntimeException: An error occured while executing doInBackground()
01-25 20:38:52.449: E/AndroidRuntime(878): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-25 20:38:52.449: E/AndroidRuntime(878): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.lang.Thread.run(Thread.java:856)
01-25 20:38:52.449: E/AndroidRuntime(878): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
01-25 20:38:52.449: E/AndroidRuntime(878): at com.example.hay.AsyncLoadData.doInBackground(AsyncLoadData.java:26)
01-25 20:38:52.449: E/AndroidRuntime(878): at com.example.hay.AsyncLoadData.doInBackground(AsyncLoadData.java:1)
01-25 20:38:52.449: E/AndroidRuntime(878): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-25 20:38:52.449: E/AndroidRuntime(878): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-25 20:38:52.449: E/AndroidRuntime(878): ... 5 more
谢谢大家欢呼
看起来Android无法找到org.jsoup.Jsoup
-确保将其放在正确的位置,以便它通过应用程序传输(即,您的libs
文件夹)
确保启用JSOUP JAR的导出。您可以在项目的属性中执行此操作。
如果您使用的是gradle,请确保已设置正确的依赖关系,否则请确保将jsoup jar放在它被编译的位置中我认为这是Eclipse上的Lib)。确保您的应用程序设置还指定您的应用程序使用依赖项,并且应包含在compile
如果是在eclipse中,请在您的libs目录中复制jsoup.jar,如果Libs Directory不存在,请自己制作。
右键单击您的项目 ->构建路径 ->配置构建路径 ->库选项卡 ->添加jar->(在libs中找到它)并添加