Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务doInBackground()出错(&;JSoup_Android_Android Asynctask_Jsoup - Fatal编程技术网

Android 异步任务doInBackground()出错(&;JSoup

Android 异步任务doInBackground()出错(&;JSoup,android,android-asynctask,jsoup,Android,Android Asynctask,Jsoup,我已经尝试用JSoup连接Async。 我想从URL获取标题,但捕获一个异常。 但我不明白为什么 我的日志是: 12-14 23:54:19.612: I/Process(568): Sending signal. PID: 568 SIG: 9 12-14 23:54:55.141: D/gralloc_goldfish(632): Emulator without GPU emulation detected. 12-14 23:55:01.051: I/dalvikvm(632):

我已经尝试用JSoup连接Async。 我想从URL获取标题,但捕获一个异常。 但我不明白为什么

我的日志是:

    12-14 23:54:19.612: I/Process(568): Sending signal. PID: 568 SIG: 9
12-14 23:54:55.141: D/gralloc_goldfish(632): Emulator without GPU emulation detected.
12-14 23:55:01.051: I/dalvikvm(632): Could not find method org.jsoup.Jsoup.connect, referenced from method com.example.myexample.MainActivity$MyTask.doInBackground
12-14 23:55:01.081: W/dalvikvm(632): VFY: unable to resolve static method 3465: Lorg/jsoup/Jsoup;.connect (Ljava/lang/String;)Lorg/jsoup/Connection;
12-14 23:55:01.081: D/dalvikvm(632): VFY: replacing opcode 0x71 at 0x000a
12-14 23:55:03.111: W/dalvikvm(632): threadid=11: thread exiting with uncaught exception (group=0x409961f8)
12-14 23:55:03.181: E/AndroidRuntime(632): FATAL EXCEPTION: AsyncTask #1
12-14 23:55:03.181: E/AndroidRuntime(632): java.lang.RuntimeException: An error occured while executing doInBackground()
12-14 23:55:03.181: E/AndroidRuntime(632):  at android.os.AsyncTask$3.done(AsyncTask.java:278)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-14 23:55:03.181: E/AndroidRuntime(632):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.lang.Thread.run(Thread.java:856)
12-14 23:55:03.181: E/AndroidRuntime(632): Caused by: java.lang.NoClassDefFoundError: org.jsoup.Jsoup
12-14 23:55:03.181: E/AndroidRuntime(632):  at com.example.myexample.MainActivity$MyTask.doInBackground(MainActivity.java:50)
12-14 23:55:03.181: E/AndroidRuntime(632):  at com.example.myexample.MainActivity$MyTask.doInBackground(MainActivity.java:1)
12-14 23:55:03.181: E/AndroidRuntime(632):  at android.os.AsyncTask$2.call(AsyncTask.java:264)
12-14 23:55:03.181: E/AndroidRuntime(632):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-14 23:55:03.181: E/AndroidRuntime(632):  ... 5 more
据我所知,我在一节
doInBackground
中犯了一个错误。 当我将参数[0]更改为参数时,我也有一个错误

public class MainActivity extends Activity {
MyTask mt;
  TextView tvInfo;
  String URL="http://www.yandex.ru/";
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvInfo = (TextView) findViewById(R.id.tvInfo);
  }

  public void onclick(View v) {
    mt = new MyTask();
    mt.execute(URL);
  }

  class MyTask extends AsyncTask<String, Void, String> {
      Document doc;
      String title=null;
    @Override
    protected void onPreExecute() {
      super.onPreExecute();
      tvInfo.setText("Please wait");
    }

    @Override
    protected String doInBackground(String... params) {
      try {
       TimeUnit.SECONDS.sleep(2);
       doc = Jsoup.connect(params[0]).get();
       String title = doc.title();
       Log.d("AsyncTask doInBackground","URL: " + params[0]);
      } catch (InterruptedException e) {
        e.printStackTrace();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      return title;
    }

    @Override
    protected void onPostExecute(String result) {
      super.onPostExecute(result);
      tvInfo.setText(title);
    }
  }
}
公共类MainActivity扩展活动{
我的任务mt;
TextView-tvInfo;
字符串URL=”http://www.yandex.ru/";
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvInfo=(TextView)findViewById(R.id.tvInfo);
}
公共void onclick(视图v){
mt=新的MyTask();
mt.execute(URL);
}
类MyTask扩展了AsyncTask{
文件文件;
字符串标题=null;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
tvInfo.setText(“请稍候”);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
时间单位。秒。睡眠(2);
doc=Jsoup.connect(参数[0]).get();
字符串title=doc.title();
Log.d(“AsyncTask doInBackground”,“URL:+params[0]);
}捕捉(中断异常e){
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回标题;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
tvInfo.setText(标题);
}
}
}

使用参数作为数组,
参数[0]参数[1]…
是正确的

您是否可以添加一个常规异常捕获,以便查看有关JSoup连接错误的更多详细信息

另外,记录params[0]的值以确保它是有效的URL:

Log.d("AsyncTask doInBackground","URL: " + params[0]);
尽管没有它们您的项目将无法编译,但请确保您正在导入正确的JavaJSOUP库。您的错误表明它找不到静态方法
连接

import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

使用params作为数组,
params[0]params[1]…
是正确的

您是否可以添加一个常规异常捕获,以便查看有关JSoup连接错误的更多详细信息

另外,记录params[0]的值以确保它是有效的URL:

Log.d("AsyncTask doInBackground","URL: " + params[0]);
尽管没有它们您的项目将无法编译,但请确保您正在导入正确的JavaJSOUP库。您的错误表明它找不到静态方法
连接

import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

与这个问题相关吗?这种错误会在编译时被检测到。这一点很好。让我更新我的答案。为什么编译器会在编译期间找到该方法,但在运行时却不存在
找不到从方法com.example.example.MainActivity$MyTask.doInBackground引用的方法org.jsoup.jsoup.connect
我不知道为什么编译不在这一行之外。带有绿色下划线的LogCat致命异常仅从AsyncTask doInBackground开始((我做了@jamisOn写的所有事情,但是没有帮助。还有什么?与这个问题相关吗?这种错误会在编译时被检测到。说得好。让我更新我的答案。为什么编译器会在编译时找到该方法,但在运行时它却不存在?
找不到方法org.jsoup.jsoup.connect,从m引用)ethod com.example.example.MainActivity$MyTask.doInBackground
我不知道为什么编译不在这一行之外。带有绿色下划线的LogCat致命异常仅从AsyncTask doInBackground开始((我做了@jamisOn写的所有事情,但没有帮助。还有什么?确保在应用程序中导出正确版本的jsoup我使用jsoup的最终版本(1.7.1)确保在应用程序中导出正确版本的jsoup我使用jsoup的最终版本(1.7.1)