jsoup代码可在Java中工作,但不能在Android中工作-NullpointerException

克里斯汀

我正在尝试使用jsoup编写一个刮天气的android应用程序。我有在Java中工作的代码,但是即使是我可以在android中编写的最简单的形式,也会引发错误。这是我的代码的一部分:

private class Retrieve_Weather extends AsyncTask<Void, Void, String> {
    private final String TAG = "Retrieve_Weather";

    protected String doInBackground(Void... params) {

        String weatherline= "oTHErly";
        Log.i(TAG, weatherline);
        Document doc = null;
        try {
            Log.i(TAG, "trying document...");
            doc = Jsoup.connect("http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&query=02139").get();
            Log.i(TAG, "after document");
            weatherline = "newline";
            }
        catch (IOException except) {
            Log.i(TAG, "Cannot Connect", except);   
            except.printStackTrace();
            weatherline = "Can't Connect";
            Log.i(TAG, "End stacktrace");

        }

        Log.i(TAG, weatherline);
        return weatherline;
    }

    @Override
    protected void onPreExecute() {
        Log.i(TAG, "onPreExecute");
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }
    @Override
    protected void onPostExecute(String result){
        //super.onPostExecute(result);
        Log.i(TAG, "onPostExecute");
    }


}

我已经玩弄了我的代码和logcat,足以弄清楚我的错误是运行.get()时抛出的nullpointerexception异常。我只是不知道为什么或如何解决它。这是我的堆栈跟踪:

07-09 03:18:13.901: I/Retrieve_Weather(1754): trying document...
07-09 03:18:15.900: D/dalvikvm(1754): GC_CONCURRENT freed 80K, 7% free 2711K/2912K, paused 83ms+20ms, total 244ms
07-09 03:18:15.910: D/dalvikvm(1754): WAIT_FOR_CONCURRENT_GC blocked 157ms
07-09 03:18:16.351: D/dalvikvm(1754): GC_CONCURRENT freed 297K, 15% free 2841K/3340K, paused 81ms+124ms, total 329ms
07-09 03:18:16.740: W/dalvikvm(1754): Exception Ljava/lang/NullPointerException; thrown while initializing Lorg/jsoup/nodes/Entities;
07-09 03:18:16.740: W/dalvikvm(1754): Exception Ljava/lang/ExceptionInInitializerError; thrown while initializing Lorg/jsoup/nodes/Entities$EscapeMode;
07-09 03:18:16.810: W/System.err(1754): java.util.concurrent.ExecutionException: java.lang.ExceptionInInitializerError
07-09 03:18:16.830: W/System.err(1754):     at java.util.concurrent.FutureTask.report(FutureTask.java:94)
07-09 03:18:16.830: W/System.err(1754):     at java.util.concurrent.FutureTask.get(FutureTask.java:160)
07-09 03:18:16.860: W/System.err(1754):     at android.os.AsyncTask.get(AsyncTask.java:482)
07-09 03:18:16.880: W/System.err(1754):     at com.example.weatherresponse.Weather.onCreate(Weather.java:35)
07-09 03:18:16.880: W/System.err(1754):     at android.app.Activity.performCreate(Activity.java:5104)
07-09 03:18:16.911: W/System.err(1754):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-09 03:18:16.911: W/System.err(1754):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
07-09 03:18:16.960: W/System.err(1754):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-09 03:18:16.970: W/System.err(1754):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-09 03:18:16.970: W/System.err(1754):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-09 03:18:16.980: W/System.err(1754):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-09 03:18:16.990: W/System.err(1754):     at android.os.Looper.loop(Looper.java:137)
07-09 03:18:16.990: W/System.err(1754):     at android.app.ActivityThread.main(ActivityThread.java:5041)
07-09 03:18:16.990: W/System.err(1754):     at java.lang.reflect.Method.invokeNative(Native Method)
07-09 03:18:17.010: W/System.err(1754):     at java.lang.reflect.Method.invoke(Method.java:511)
07-09 03:18:17.061: W/System.err(1754):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-09 03:18:17.061: W/System.err(1754):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-09 03:18:17.061: W/System.err(1754):     at dalvik.system.NativeStart.main(Native Method)
07-09 03:18:17.090: W/System.err(1754): Caused by: java.lang.ExceptionInInitializerError
07-09 03:18:17.090: W/System.err(1754):     at org.jsoup.nodes.Document$OutputSettings.<init>(Document.java:210)
07-09 03:18:17.150: W/dalvikvm(1754): threadid=11: thread exiting with uncaught exception (group=0x40a71930)
07-09 03:18:17.150: W/System.err(1754):     at org.jsoup.nodes.Document.<init>(Document.java:18)
07-09 03:18:17.160: W/System.err(1754):     at org.jsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:27)
07-09 03:18:17.160: W/System.err(1754):     at org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:40)
07-09 03:18:17.160: W/System.err(1754):     at org.jsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:37)
07-09 03:18:17.170: W/System.err(1754):     at org.jsoup.parser.Parser.parseInput(Parser.java:30)
07-09 03:18:17.170: W/System.err(1754):     at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:102)
07-09 03:18:17.170: W/System.err(1754):     at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:498)
07-09 03:18:17.215: W/System.err(1754):     at org.jsoup.helper.HttpConnection.get(HttpConnection.java:154)
07-09 03:18:17.215: W/System.err(1754):     at com.example.weatherresponse.Weather$Retrieve_Weather.doInBackground(Weather.java:85)
07-09 03:18:17.220: W/System.err(1754):     at com.example.weatherresponse.Weather$Retrieve_Weather.doInBackground(Weather.java:1)
07-09 03:18:17.220: W/System.err(1754):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-09 03:18:17.230: W/System.err(1754):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
07-09 03:18:17.230: W/System.err(1754):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-09 03:18:17.240: W/System.err(1754):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-09 03:18:17.240: W/System.err(1754):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-09 03:18:17.240: W/System.err(1754):     at java.lang.Thread.run(Thread.java:856)
07-09 03:18:17.260: W/System.err(1754): Caused by: java.lang.ExceptionInInitializerError
07-09 03:18:17.290: W/System.err(1754):     at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Entities.java:20)
07-09 03:18:17.290: W/System.err(1754):     ... 17 more
07-09 03:18:17.290: W/System.err(1754): Caused by: java.lang.NullPointerException: in == null
07-09 03:18:17.290: W/System.err(1754):     at java.util.Properties.load(Properties.java:246)
07-09 03:18:17.290: W/System.err(1754):     at org.jsoup.nodes.Entities.loadEntities(Entities.java:151)
07-09 03:18:17.290: W/System.err(1754):     at org.jsoup.nodes.Entities.<clinit>(Entities.java:135)
07-09 03:18:17.290: W/System.err(1754):     ... 18 more
07-09 03:18:17.383: I/System.out(1754): ExecExceptjava.lang.ExceptionInInitializerError
07-09 03:18:19.570: E/AndroidRuntime(1754): FATAL EXCEPTION: AsyncTask #1
07-09 03:18:19.570: E/AndroidRuntime(1754): java.lang.RuntimeException: An error occured while executing doInBackground()
07-09 03:18:19.570: E/AndroidRuntime(1754):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.lang.Thread.run(Thread.java:856)
07-09 03:18:19.570: E/AndroidRuntime(1754): Caused by: java.lang.ExceptionInInitializerError
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.nodes.Document$OutputSettings.<init>(Document.java:210)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.nodes.Document.<init>(Document.java:18)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:27)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:40)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:37)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.parser.Parser.parseInput(Parser.java:30)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:102)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:498)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.helper.HttpConnection.get(HttpConnection.java:154)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at com.example.weatherresponse.Weather$Retrieve_Weather.doInBackground(Weather.java:85)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at com.example.weatherresponse.Weather$Retrieve_Weather.doInBackground(Weather.java:1)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
07-09 03:18:19.570: E/AndroidRuntime(1754):     ... 4 more
07-09 03:18:19.570: E/AndroidRuntime(1754): Caused by: java.lang.ExceptionInInitializerError
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Entities.java:20)
07-09 03:18:19.570: E/AndroidRuntime(1754):     ... 17 more
07-09 03:18:19.570: E/AndroidRuntime(1754): Caused by: java.lang.NullPointerException: in == null
07-09 03:18:19.570: E/AndroidRuntime(1754):     at java.util.Properties.load(Properties.java:246)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.nodes.Entities.loadEntities(Entities.java:151)
07-09 03:18:19.570: E/AndroidRuntime(1754):     at org.jsoup.nodes.Entities.<clinit>(Entities.java:135)
07-09 03:18:19.570: E/AndroidRuntime(1754):     ... 18 more

除了这一行基本代码外,我的代码都能正常运行。我已经在模拟器和Android手机上测试了我的代码,并且都可以访问互联网。我试过多个网站,以及这些网站的移动版本,但没有一个起作用。我的清单和库文件都在正确的位置具有Internet权限。我在这个站点和其他站点上到处都是关于我的问题的解决方案。由于我在相关帖子中找到了我所修改的代码和权限,但是我还没有找到适合我的已回答帖子。但是,我发现了一些未回答的帖子,它们提出了完全相同的问题。我发现我尚未尝试过的唯一答案是此问题使用AsyncTask和Jsoup释放APK时出错:我不知道要更改哪个文件来测试它是否解决了我的问题。我是编程的新手,将不胜感激。谢谢!

克里斯汀

我的代码现在可以使用了!我最终将.jar文件移动到lib中,而不是按照Android-SDK r17的建议将其用作引用的外部jar破坏了工作项目我还添加了一个用户代理,并对AsyncTask进行了重新设计,以便Jsoup.connect(url)位于onPreExecute中,而将.get()保留在doInBackground中。

    private class Retrieve_Weather extends AsyncTask<Void, Void, String> {
    private final String TAG = "Retrieve_Weather";
    Connection con = null;

    protected Void doInBackground(String... params) {

        //Log.i(TAG, weatherline);
        Document doc = null;
        if (con !=null){
            try {
                Log.i(TAG, "trying document...");
                doc = con.get();
                Log.i(TAG, "after document");
                Element currentWeather = doc.getElementById("curCond");
                currentweather = currentWeather.text();
                Log.i(TAG, currentWeather.text());
                }
            catch (IOException except) {
                Log.i(TAG, "Cannot Connect", except);   
                except.printStackTrace();
                currentweather = "Can't Connect";
                Log.i(TAG, "End stacktrace");

            }

        }
        else{
            currentweather = "Connection returned null";
        }

        //Log.i(TAG, weatherline);
        return currentweather;

    }

    @Override
    protected void onPreExecute() {
        //Log.i(TAG, "onPreExecute");
        Log.i(TAG, "trying to connect...");
        con = Jsoup.connect("http://www.wunderground.com/cgi-bin/findweather/getForecast?query=zmw:02142.1.99999").userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0");
        Log.i(TAG, "CONNECTED!!!");

        }




    @Override
    protected void onProgressUpdate(Void... values) {
        Log.i(TAG, "onProgressUpdate");
    }

    @Override
    protected void onPostExecute(Void result){
        Log.i(TAG, "onPostExecute");

    }


}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

代码可在Dreamweaver CS6中工作,但不能在chrome / firefox中工作。

来自分类Dev

Bootstrap代码可在Fiddle中工作,但不能在localhost中工作?

来自分类Dev

Linq / Lambda代码可在VB中工作,但不能在C#中工作

来自分类Dev

代码可在JSFiddle中工作,但不能在Web浏览器或Dreamweaver中工作

来自分类Dev

SharePoint代码可在控制台中工作,但不能在Web API中工作

来自分类Dev

Android:微调器可在Activity中工作,但不能在Fragment中工作

来自分类Dev

PostgreSQL查询可在pgAdmin中工作,但不能在Java EclipseLink中工作

来自分类Dev

代码可以在Java中工作,但不能在Python中工作吗?

来自分类Dev

代码可以在Java中工作,但不能在Python中工作吗?

来自分类Dev

NullPointerException(Java)

来自分类Dev

AppleScript可在Editor中工作,但不能在Outlook中工作

来自分类Dev

Javascript可在href中工作,但不能在JS文件中工作

来自分类Dev

Sudoku求解器可在python中工作,但不能在javascript中工作

来自分类Dev

Shell命令可在Shell中工作,但不能在Shell脚本中工作

来自分类Dev

Javascript对象可在html中工作,但不能在php中工作

来自分类Dev

2d数组的malloc可在GCC中工作,但不能在Visual C ++中工作

来自分类Dev

ThrowableCaptor可在Eclipse中工作,但不能在Netbeans中工作

来自分类Dev

MongoDB .find可在Shell中工作,但不能在js中工作

来自分类Dev

Android中的layoutinflater nullpointerexception

来自分类Dev

Android中未知的NullPointerException

来自分类Dev

Android的onCreate中的NullPointerException

来自分类Dev

Android活动中的NullPointerException

来自分类Dev

Android sqlite中的NullPointerException

来自分类Dev

actionmailer可在控制台中工作,但不能在控制器中工作

来自分类Dev

在Java中避免NullPointerException

来自分类Dev

Java ArrayList中的NullPointerException

来自分类Dev

Java NullPointerException在阅读中

来自分类Dev

在Java中防止NullPointerException

来自分类Dev

Java中的NullPointerException

Related 相关文章

  1. 1

    代码可在Dreamweaver CS6中工作,但不能在chrome / firefox中工作。

  2. 2

    Bootstrap代码可在Fiddle中工作,但不能在localhost中工作?

  3. 3

    Linq / Lambda代码可在VB中工作,但不能在C#中工作

  4. 4

    代码可在JSFiddle中工作,但不能在Web浏览器或Dreamweaver中工作

  5. 5

    SharePoint代码可在控制台中工作,但不能在Web API中工作

  6. 6

    Android:微调器可在Activity中工作,但不能在Fragment中工作

  7. 7

    PostgreSQL查询可在pgAdmin中工作,但不能在Java EclipseLink中工作

  8. 8

    代码可以在Java中工作,但不能在Python中工作吗?

  9. 9

    代码可以在Java中工作,但不能在Python中工作吗?

  10. 10

    NullPointerException(Java)

  11. 11

    AppleScript可在Editor中工作,但不能在Outlook中工作

  12. 12

    Javascript可在href中工作,但不能在JS文件中工作

  13. 13

    Sudoku求解器可在python中工作,但不能在javascript中工作

  14. 14

    Shell命令可在Shell中工作,但不能在Shell脚本中工作

  15. 15

    Javascript对象可在html中工作,但不能在php中工作

  16. 16

    2d数组的malloc可在GCC中工作,但不能在Visual C ++中工作

  17. 17

    ThrowableCaptor可在Eclipse中工作,但不能在Netbeans中工作

  18. 18

    MongoDB .find可在Shell中工作,但不能在js中工作

  19. 19

    Android中的layoutinflater nullpointerexception

  20. 20

    Android中未知的NullPointerException

  21. 21

    Android的onCreate中的NullPointerException

  22. 22

    Android活动中的NullPointerException

  23. 23

    Android sqlite中的NullPointerException

  24. 24

    actionmailer可在控制台中工作,但不能在控制器中工作

  25. 25

    在Java中避免NullPointerException

  26. 26

    Java ArrayList中的NullPointerException

  27. 27

    Java NullPointerException在阅读中

  28. 28

    在Java中防止NullPointerException

  29. 29

    Java中的NullPointerException

热门标签

归档