關於在android開發中使用jsoup的詳解
我自己在用MP3播放器的時候,利用jsoup從網上下載網頁並解析,但是發現在匯入jsoup包之後,發現出現java.lang.NoClassDefFoundError:org.jsoup.Jsoup問題 ,如下:
我已經設定了網路許可權,後面通過查詢發現是因為ADT20以後不支援匯入Jsoup.jar包,要想繼續使用應該先將匯入的包刪了,再在自己專案的根目錄下建立libs目錄,方法如下:右鍵專案,選擇folder,在彈出的選項中輸入libs,然後直接將Jsoup.jar包移到libs中,這裡說下,我用複製黏貼不行,然後直接拖拽的,因為libs貌似不能開啟,也可能是我不知道
2.,然後執行程式,接下來會出現android.os.NetworkOnMainThreadException錯誤,這個錯誤是4.0之後在主執行緒裡面執行Http請求都會報這個錯誤,這個錯誤的解決方法如下:將jsoup的哪些程式碼放在一個執行緒中,如我自己寫的 class DownListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new Thread(downloadRun).start();
}
}
Runnable downloadRun = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
DownLoad download=new DownLoad();
String geci=download.Download();
System.out.println("geci:"+geci);
}
};
}
這是在activity中的程式碼一部分,DownLoad這個類是自己寫的,這個類中存放的就是jsoup的程式碼,如果直接在監聽器調中寫 DownLoad download=new DownLoad(); String geci=download.Download();,就會出現這個錯誤,需要放在一個執行緒中,程式碼如上,再次執行程式就好了,在這裡特別說下,一定要記得在AndroidManifest.xml中宣告訪問網路許可權,這樣應該就不會有問題了。