Jsoupの使い方について

1,124 views
Skip to first unread message

三木健太郎

unread,
Jun 13, 2014, 1:29:41 PM6/13/14
to android-g...@googlegroups.com
Jsoupの使い方について教えていただけないでしょうか?

下記のサイトを参考にしております。
http://techbooster.org/android/mashup/13635/


25行目のJsoup.connect(url).get();で落ちるのですがなにが問題であるのか分かっていません。
誰かわかるかたがいればご教示願います。


下記ソース
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

package com.example.upchart;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        String url = "http://www.yahoo.co.jp/";
 
        try {
            // HTMLのドキュメントを取得
            Document document = Jsoup.connect(url).get();
 
            // titleタグを取得
            Elements title = document.getElementsByTag("title");
            // こちらでもtitleを取得できる
            // String title = document.title();
 
            // bodyタグをIDから取得
            Elements body = document.getElementsByTag("body");
            // こちらでもbodyを取得できる
            //Element body = document.body();
 
            TextView tv = (TextView) findViewById(R.id.textView1);
            tv.setText(title.toString() + "\n" + body.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


下記エラー
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
06-14 02:24:02.166: W/dalvikvm(16586): threadid=1: thread exiting with uncaught exception (group=0x40c00ae0)
06-14 02:24:02.246: E/AndroidRuntime(16586): FATAL EXCEPTION: main
06-14 02:24:02.246: E/AndroidRuntime(16586): java.lang.NoClassDefFoundError: org.jsoup.Jsoup
06-14 02:24:02.246: E/AndroidRuntime(16586): at com.example.upchart.MainActivity.onCreate(MainActivity.java:25)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.Activity.performCreate(Activity.java:5104)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.ActivityThread.access$600(ActivityThread.java:150)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.os.Handler.dispatchMessage(Handler.java:99)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.os.Looper.loop(Looper.java:213)
06-14 02:24:02.246: E/AndroidRuntime(16586): at android.app.ActivityThread.main(ActivityThread.java:5153)
06-14 02:24:02.246: E/AndroidRuntime(16586): at java.lang.reflect.Method.invokeNative(Native Method)
06-14 02:24:02.246: E/AndroidRuntime(16586): at java.lang.reflect.Method.invoke(Method.java:511)
06-14 02:24:02.246: E/AndroidRuntime(16586): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
06-14 02:24:02.246: E/AndroidRuntime(16586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
06-14 02:24:02.246: E/AndroidRuntime(16586): at dalvik.system.NativeStart.main(Native Method)


Hirokazu Fukami

unread,
Jun 13, 2014, 1:32:32 PM6/13/14
to android-g...@googlegroups.com
こんばんはfkmです。

Jsoupのjarファイルが入っていないという可能性は?
クラス定義が見つからないよ! の例外が出ているので。
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。
> このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

三木健太郎

unread,
Jun 13, 2014, 11:03:35 PM6/13/14
to android-g...@googlegroups.com
返信ありがとうございます。

jarファイルがはいっていないことはないと思います。
そもそもクラス定義が見つからない場合、ビルドが通らないのではないでしょうか?
一応jarファイルを解凍して確認しましたがそれっぽいクラスファイルは存在しました。

が何時JARの追加でライブラリーに追加するだけと思っております。
画像添付していますやりかたが誤っている場合、指摘していただきたいです。


2014年6月14日土曜日 2時32分32秒 UTC+9 fkm:
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。
無題.png

Hirokazu Fukami

unread,
Jun 13, 2014, 11:17:18 PM6/13/14
to android-g...@googlegroups.com
こんにちはfkmです。

ビルドパスを見ると、jarがlibsフォルダに入っていないので、
Eclipse上ではコンパイルが通るものの、apkビルド時にjarが含まれない
という現象になっていると思われます。

ADT(Eclipseのプラグイン)は、libsフォルダにいれたjarを自動で
ビルドパスに追加してくれるので、自分で設定する必要は無いです。
>> > android-group-j...@googlegroups.com にメールを送信してください。
>> > このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
>> > http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
>> > その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。

三木健太郎

unread,
Jun 13, 2014, 11:43:39 PM6/13/14
to android-g...@googlegroups.com
度々返信ありがとうございます。

libsフォルダにいれてみましたが、やはりだめでした。
他に設定があるのでしょうか?
(先ほどの画像添付した外部Jarの追加したものは削除しました。)

落ちる箇所は同じでDocument document = Jsoup.connect(url).get();です。
画像を添付しています。誤りがあれば指摘していただきたいです。

エラー
-------------------------------------------------------------------------
06-14 12:39:21.926: E/AndroidRuntime(26653): FATAL EXCEPTION: main
06-14 12:39:21.926: E/AndroidRuntime(26653): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.upchart/com.example.upchart.MainActivity}: android.os.NetworkOnMainThreadException
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread.access$600(ActivityThread.java:150)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.os.Handler.dispatchMessage(Handler.java:99)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.os.Looper.loop(Looper.java:213)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread.main(ActivityThread.java:5153)
06-14 12:39:21.926: E/AndroidRuntime(26653): at java.lang.reflect.Method.invokeNative(Native Method)
06-14 12:39:21.926: E/AndroidRuntime(26653): at java.lang.reflect.Method.invoke(Method.java:511)
06-14 12:39:21.926: E/AndroidRuntime(26653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
06-14 12:39:21.926: E/AndroidRuntime(26653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
06-14 12:39:21.926: E/AndroidRuntime(26653): at dalvik.system.NativeStart.main(Native Method)
06-14 12:39:21.926: E/AndroidRuntime(26653): Caused by: android.os.NetworkOnMainThreadException
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1126)
06-14 12:39:21.926: E/AndroidRuntime(26653): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
06-14 12:39:21.926: E/AndroidRuntime(26653): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
06-14 12:39:21.926: E/AndroidRuntime(26653): at java.net.InetAddress.getAllByName(InetAddress.java:214)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
06-14 12:39:21.926: E/AndroidRuntime(26653): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
06-14 12:39:21.926: E/AndroidRuntime(26653): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:439)
06-14 12:39:21.926: E/AndroidRuntime(26653): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:424)
06-14 12:39:21.926: E/AndroidRuntime(26653): at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:178)
06-14 12:39:21.926: E/AndroidRuntime(26653): at org.jsoup.helper.HttpConnection.get(HttpConnection.java:167)
06-14 12:39:21.926: E/AndroidRuntime(26653): at com.example.upchart.MainActivity.onCreate(MainActivity.java:25)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.Activity.performCreate(Activity.java:5104)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
06-14 12:39:21.926: E/AndroidRuntime(26653): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
06-14 12:39:21.926: E/AndroidRuntime(26653): ... 11 more


2014年6月14日土曜日 12時17分18秒 UTC+9 fkm:
>> > android-group-japan+unsub...@googlegroups.com にメールを送信してください。
>> > このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
>> > http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
>> > その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
>>
>>
>>
>> --
>> -------------------------------------------------------------
>> 深見 浩和(Hirokazu Fukami)
>>
>> URI:http://www.fkmsoft.jp
>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。

三木健太郎

unread,
Jun 13, 2014, 11:44:51 PM6/13/14
to android-g...@googlegroups.com


2014年6月14日土曜日 12時43分39秒 UTC+9 三木健太郎:
無題.png

Hirokazu Fukami

unread,
Jun 13, 2014, 11:51:36 PM6/13/14
to android-g...@googlegroups.com
こんにちはfkmです。

libsにいれたことで、NoSuchMethondExceptionは出なくなっているので、
前進はしていますね。

で、次の例外ですが、
NetworkOnMainThreadException
が投げられています。
これは、onCreate()や、ボタンのonClick()内でネットワーク通信をやってしまった時に
発生する例外で、Android特有のものです。
Androidでは、Android 4.0以上(実は3かも)は通信を別スレッドで行う必要があります。

まずはAsyncTaskでぐぐってみるといろいろ情報がでてきます。
>>> >> > android-group-j...@googlegroups.com にメールを送信してください。
>>> >> > このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
>>> >> > http://groups.google.com/group/android-group-japan
>>> >> > からこのグループにアクセスしてください。
>>> >> > その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> -------------------------------------------------------------
>>> >> 深見 浩和(Hirokazu Fukami)
>>> >>
>>> >> URI:http://www.fkmsoft.jp
>>> >> email: f...@fkmsoft.jp
>>> >
>>> > --
>>> > このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
>>> > このグループから退会し、グループからのメールの配信を停止するには
>>> > android-group-j...@googlegroups.com にメールを送信してください。
>>> > このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
>>> > http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
>>> > その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
>>>
>>>
>>>
>>> --
>>> -------------------------------------------------------------
>>> 深見 浩和(Hirokazu Fukami)
>>>
>>> URI:http://www.fkmsoft.jp
>>> email: f...@fkmsoft.jp
>
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。

中山雄介

unread,
Jun 13, 2014, 11:51:54 PM6/13/14
to android-group-japan

エラー内容を見るに、ネットワーク処理をメインスレッドで処理しようとしているため落ちている、という形のように思います。

通信処理をどのように行わなければいけないか、というのを調べると良いかと思います。

2014/06/14 12:44 "三木健太郎" <app.1211...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。

三木健太郎

unread,
Jun 14, 2014, 1:09:41 AM6/14/14
to android-g...@googlegroups.com
ありがとうございました。

通信を別スレッドで行うことにより落ちないようになりました。

この度は親切に教えていただきありがとうございました。
Reply all
Reply to author
Forward
0 new messages