この問題は回避策によって解決されましたが、誰かが解決策を見つけたいと思っている場合は、未回答のままにしておきます. 簡単な修正を探している人のために: 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 にコピーしました。