这个问题已经通过规避来解决,但是如果有人想要找出解决方案,我会留下未答复的问题。对于任何寻求快速修复的人来说:我只需将Jsoup替换为jericho即可使其工作,而且没有任何打嗝。
我有一个非常奇怪的问题,如标题中所述。我正在做一些html抓取,这在我的电脑上运行得很好,但是一旦我把它变成Android apk,图书馆就好像打破了。我正在使用Jsoup 1.7.1。这是复制错误的示例代码。
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetHtml updater = new GetHtml();
updater.execute();
}
public class GetHtml extends AsyncTask<Void, Void, String>{
@Override
protected String doInBackground(Void... arg0) {
Document doc;
try {
doc = Jsoup.connect("http://www.example.com").get();
String header = doc.getElementsByTag("h1").get(0).text();
return header;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String arg0){
ListView lv = (ListView)findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, R.id.listView1);
lv.setAdapter(adapter);
adapter.add(arg0);
adapter.notifyDataSetChanged();
}
}
}
这引发了一堆错误,但突出的是
01-16 19:30:47.793: E/AndroidRuntime(29082): Caused by: java.lang.NoClassDefFoundError: java.applet.Applet
这很烦人,因为我看到许多使用Jsoup的项目都很好,还有教程。有谁知道造成这种情况的原因是什么?
哦,为了清楚起见,我将Jsoup-1.7.1.jar作为外部jar链接并复制到$ PROJECT_ROOT / libs。
答案 0 :(得分:0)
对于API 11或更高版本的目标,不允许您从主UI线程访问网络。如果你这样做,你会得到一个NetworkOnMainThreadExeption。检查日志中是否存在该异常,因为您正在从主UI线程访问网络。
您可以通过将jsoup提取和处理放入AsyncTask