安卓使用JSOUP的问题

qhttxs 2015-03-27 10:58:09
我用eclipse开发一个安卓的新闻爬虫app,遇到一个问题,就是如下代码:
package com.android.web;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class _GetWebResoureActivity extends Activity {

Document doc;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = new TextView(this);

String myString = null;
StringBuffer sff = new StringBuffer();
try
{
Document doc = Jsoup.connect("http://www.baidu.com").get();
Elements links = doc.select("a[href]");
for(Element link : links){
sff.append(link.attr("abs:href")).append(" ").append(link.text()).append("\n");
}
myString = sff.toString();
}
catch (Exception e)
{

myString = e.getMessage();
e.printStackTrace();
}
/* 将信息设置到TextView */
tv.setText(myString);

/* 将TextView显示到屏幕上 */
this.setContentView(tv);
}

}
我在java的运行环境下运行就可以显示出那些百度解析出来的一些字符
但是安卓环境下一旦运行就会闪退
03-27 10:51:06.735: E/AndroidRuntime(4233): FATAL EXCEPTION: main
03-27 10:51:06.735: E/AndroidRuntime(4233): Process: com.android.web, PID: 4233
03-27 10:51:06.735: E/AndroidRuntime(4233): java.lang.NoClassDefFoundError: org.jsoup.Jsoup
03-27 10:51:06.735: E/AndroidRuntime(4233): at com.android.web._GetWebResoureActivity.onCreate(_GetWebResoureActivity.java:43)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.Activity.performCreate(Activity.java:5337)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1099)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2201)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.ActivityThread.access$800(ActivityThread.java:138)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1235)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.os.Handler.dispatchMessage(Handler.java:102)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.os.Looper.loop(Looper.java:136)
03-27 10:51:06.735: E/AndroidRuntime(4233): at android.app.ActivityThread.main(ActivityThread.java:5054)
03-27 10:51:06.735: E/AndroidRuntime(4233): at java.lang.reflect.Method.invokeNative(Native Method)
03-27 10:51:06.735: E/AndroidRuntime(4233): at java.lang.reflect.Method.invoke(Method.java:515)
03-27 10:51:06.735: E/AndroidRuntime(4233): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
03-27 10:51:06.735: E/AndroidRuntime(4233): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
03-27 10:51:06.735: E/AndroidRuntime(4233): at dalvik.system.NativeStart.main(Native Method)
这是它的错误日志,表示看不懂,而且我已经在manifest里添加了:
<!-- 加入访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
求大神给指点啊啊!!!???
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
風言楓語 2015-03-27
  • 打赏
  • 举报
回复
包的话直接扔到libs目录里面就行了
qhttxs 2015-03-27
  • 打赏
  • 举报
回复
引用 3 楼 zdd2389 的回复:
java.lang.NoClassDefFoundError: org.jsoup.Jsoup,包没添加到编译路径里。

我已经添加了路径了额
風言楓語 2015-03-27
  • 打赏
  • 举报
回复
引用 4 楼 qhttxs 的回复:
Document doc = Jsoup.connect("http://www.baidu.com").get(); 这是第43行。。。安卓网络访问放到线程里是怎么回事?
android4.0以后访问网络不允许在主线程中进行
qhttxs 2015-03-27
  • 打赏
  • 举报
回复
引用 2 楼 u012456102 的回复:
对了 你在访问网络时有没有使用线程 android网络访问必须放到线程里面
Document doc = Jsoup.connect("http://www.baidu.com").get(); 这是第43行。。。安卓网络访问放到线程里是怎么回事?
qhttxs 2015-03-27
  • 打赏
  • 举报
回复
Document doc = Jsoup.connect("http://www.baidu.com").get(); 这是第43行。。。安卓网络访问放到线程里是怎么回事?
zdd2389 2015-03-27
  • 打赏
  • 举报
回复
java.lang.NoClassDefFoundError: org.jsoup.Jsoup,包没添加到编译路径里。
風言楓語 2015-03-27
  • 打赏
  • 举报
回复
对了 你在访问网络时有没有使用线程 android网络访问必须放到线程里面
風言楓語 2015-03-27
  • 打赏
  • 举报
回复
at com.android.web._GetWebResoureActivity.onCreate(_GetWebResoureActivity.java:43) 看下43行

80,330

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧