java.lang.NullPointerException:尝试在JSoup库上调用接口方法'int java.lang.Comparable.compareTo(java.lang.Object)'

问题描述 投票:0回答:1

我曾尝试在Jsoup github论坛中提问,但仍未得到任何答案。此崩溃仅发生在Firebase TestLab(API级别28、26)中的特定设备中。我很难测试bcz我所有的物理设备都能正常工作。我知道嫌疑人在哪里

fun parseArticleP(article: String): MutableList<ContentArticle?> {

        println("article -> $article")
        val contents = mutableListOf<ContentArticle?>()
        val doc = Jsoup.parse(article)
        // wrap FIGURE
        val elFigure = doc.select("figure")
        for (i in elFigure.indices) {
            val element = elFigure[i]
            element.wrap("<p></p>")
        }
        val elP = doc.select("p")
        for (el in elP) {
            val v = el.text()
            val p = el.outerHtml()
            val ca = ContentArticle()
            ca.setValue(v)
            ca.setP(p)
            contents.add(ca)
        }
        return contents
    }

您可以看到,我在上面写了println,以查看下面的控制台日志返回的内容。有人可以帮我吗?

06-08 20:22:51.081: I/System.out(13405): article -> <p><strong>TRIBUNNEWS.COM, JAKARTA -</strong> Gubernur Jawa Tengah (Jateng) secara mengejutkan naik ke papan atas sebagai calon presiden (Capres) 2024 dengan tingkat elektabilitas tertinggi nomor dua di bawah Prabowo Subianto.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Survei yang dipublikasikan Indikator Politik Indonesia pada Minggu (7/6/2020) itu secara mengejutkan menempatkan Ganjar sebagai kandidat capres yang patut diperhitungkan pada Pilpres 2024 mendatang.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Elektabilitas Ganjar Pranowo meningkat dari 9,1 persen pada Februari 2020 menjadi 11,8 persen pada Mei 2020.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Dia mengalahkan sejumlah tokoh yang disebut-sebut berpeluang jadi capres seperti Gubernur DKI Jakarta Anies Baswedan, Gubernur Jawa Barat Ridwan Kamil, bahkan Ketua Umum Demokrat Agus Harimurti Yudhoyono (AHY).</p>
06-08 20:22:51.081: I/System.out(13405): <ul>
06-08 20:22:51.081: I/System.out(13405): <li>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Survei Terbaru: Elektabilitas Ganjar Menyodok ke Papan Atas Lampaui Anies, Sandi, AHY dan RK" href="https://www.tribunnews.com/nasional/2020/06/08/survei-terbaru-elektabilitas-ganjar-menyodok-ke-papan-atas-lampaui-anies-sandi-ahy-dan-rk">Survei Terbaru: Elektabilitas Ganjar Menyodok ke Papan Atas Lampaui Anies, Sandi, AHY dan RK</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): </li>
06-08 20:22:51.081: I/System.out(13405): </ul>
06-08 20:22:51.081: I/System.out(13405): <p>Dua tokoh yang mengalami peningkatan elektabilitas yakni Ridwan Kamil dan Ganjar Pranowo.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Meskipun, elektabilitas keduanya belum mampu mengalahkan Prabowo.</p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Sebut Dirinya Tak Mungkin Maju Jadi Capres, Susi Pudjiastuti: Kalau Tanya Lagi Saya Tenggelamkan" href="https://www.tribunnews.com/nasional/2020/04/25/sebut-dirinya-tak-mungkin-maju-jadi-capres-susi-pudjiastuti-kalau-tanya-lagi-saya-tenggelamkan">Sebut Dirinya Tak Mungkin Maju Jadi Capres, Susi Pudjiastuti: Kalau Tanya Lagi Saya Tenggelamkan</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <p>"Dukungan pada Ganjar Pranowo dan Ridwan Kamil kini cenderung meningkat dibandingkan temuan Februari lalu," demikian tulis keterangan dalam hasil temuan survei tersebut, seperti dilansir Kompas.com dari laman resmi Indikator, Senin (8/6/2020).</p>
06-08 20:22:51.081: I/System.out(13405): <p>Presentase tersebut menempatkan Ganjar di urutan kedua teratas setelah Prabowo, sekaligus mengalahkan Anies.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Sementara, elektabilitas Gubernur Jawa Barat Ridwan Kamil (RK) meningkat dari 3,8 persen menjadi 7,7 persen.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Sehingga, membuatnya menempati urutan keempat teratas.</p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="DPD Gerindra Papua Ingin Prabowo Tetap Jadi Ketua Umum dan Capres 2024" href="https://www.tribunnews.com/nasional/2020/03/19/dpd-gerindra-papua-ingin-prabowo-tetap-jadi-ketua-umum-dan-capres-2024">DPD Gerindra Papua Ingin Prabowo Tetap Jadi Ketua Umum dan Capres 2024</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <figure class="op-interactive"><iframe src="https://www.youtube.com/embed/2hX3yehk0eU" width="520" height="292" scrolling="no" frameborder="0" loading="lazy"></iframe></figure>
06-08 20:22:51.081: I/System.out(13405): <p><strong>Berikut hasil survei selengkapnya :</strong></p>
06-08 20:22:51.081: I/System.out(13405): <p>1. Prabowo Subianto (Mei 14,1 persen; Februari 22,2 persen)<br />2. Ganjar Pranowo (Mei 11,8 persen; Februari 9,1 persen)<br />3. Anies Baswedan (Mei 10,4 persen; Februari 12,1 persen)<br />4. Ridwan Kamil (Mei 7,7 persen; Februari 3,8 persen)<br />5. Sandiaga Uno (Mei 6 persen; Februari 9,5 persen)<br />6. Agus Harimurti Yudhyono (Mei 4,8 persen; Februari 6,5 persen)<br />7. Khofifah Indar Parawansa (Mei 4,3 persen; Februari 5,7 persen)<br />8. Mahfud MD (Mei 3,3 persen; Februari 3,8 persen)<br />9. Gatot Nurmantyo (Mei 1,7 persen; Februari 2,2 persen)<br />10. Erick Thohir (Mei 1,6 persen; Februari 1,9 persen)<br />11. Puan Maharani (Mei 0,8 persen; Februari 1,4 persen)<br />12. Tito Karnavian (Mei 0,6 persen; Februari 0,8 persen)<br />13. Budi Gunawan (Mei 0,4 persen; Februari 0,4 persen)<br />14. Muhaimin Iskandar (Mei 0 persen; Februari 0,3 persen)</p>
06-08 20:22:51.081: I/System.out(13405): <p>Untuk diketahui, survei dilaksanakan dengan metode kontak telepon dengan margin of error kurang lebih sebesar 2,9 persen dan tingkat kepercayaan 95 persen.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Adapun responden yang menjawab tidak tahu atau tidak jawab mengalami peningkatan dari 20,3 persen pada Februari 2020 menjadi 32,3 persen pada Mei 2020.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Dari sekitar 1.200 responden yang disurvei pada 16-18 Mei 2020, elektabilitas Prabowo hanya 14,1 persen, bila dibandingkan Februari 2020 yang mencapai 22,2 persen.</p>
06-08 20:22:51.081: I/System.out(13405): <p><strong>Penerus Jokowi?</strong></p>
06-08 20:22:51.081: I/System.out(13405): <p>Pada awal Agustus 2018 lalu, <em>Kompas.com</em> menurunkan tulisan berjudul&nbsp;<a href="https://nasional.kompas.com/read/2019/08/05/05580091/ganjar-pranowo-dan-tri-rismaharini-dinilai-bisa-gantikan-sosok-jokowi">"Ganjar Pranowo dan Tri Rismaharini Dinilai Bisa Gantikan Sosok Jokowi".&nbsp;</a></p>
06-08 20:22:51.081: I/System.out(13405): <p>Sosok Ganjar Pranowo dan Tri Rismaharini dinilai bisa menggantikan sosok Joko Widodo (Jokowi) untuk diusung oleh PDI Perjuangan ( PDI-P) pada Pilpres 2024.</p>
06-08 20:22:51.081: I/System.out(13405): <p>"Pak Ganjar punya panggung sebetulnya karena Gubernur, bisa jadi batu lompatan menunggu tangga Pilpres 2024," ujar pengamat politik Universitas Islam Negeri (UIN) Syarif Hidayatullah, Pangi Syarwi Chaniago kepada Kompas.com, Minggu (4/8/2019).</p>
06-08 20:22:51.081: I/System.out(13405): <p>Menurut Pangi, Ganjar yang menjabat sebagai Gubernur Jawa Tengah itu merupakan figur yang memungkinkan sebagai pengganti Jokowi.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Kendati demikian, Pangi mengingatkan agar Ganjar menjaga citranya tetap baik sampai Pilpres 2024.</p>
06-08 20:22:51.081: I/System.out(13405): <p>"Karena citra beliau sempat terganggu oleh kasus e-KTP, tetapi kan sudah clear bahwa beliau tidak terbukti korupsi," ujar dia.</p>
06-08 20:22:51.081: I/System.out(13405): <figure class="op-interactive"><iframe src="https://www.youtube.com/embed/AN9SVjoGIGA" width="520" height="292" scrolling="no" frameborder="0" loading="lazy"></iframe></figure>
06-08 20:22:51.081: I/System.out(13405): <p>Ia mencontohkan, selama ini dalam sosok Jokowi melekat citra sederhana dan merakyat.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Oleh karena itu, kata dia, Ganjar pun harus mempunyai citra tersendiri yang dapat menjadi ciri khasnya jika ingin menonjol.</p>
06-08 20:22:51.081: I/System.out(13405): <p>"Termasuk beliau harus menjelaskan agar masyarakat dan rakyat Indonesia tahu sepak terjang dan keberhasilan beliau menata Jawa Tengah," kata dia.</p>
06-08 20:22:51.081: I/System.out(13405): <p>"Sehingga beliau memantaskan diri menjadi calon presiden dari PDI-P di tahun tersebut," ucap dia.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Sementara itu, sosok Tri Rismaharini dinilai Panggi berpeluang menggantikan Jokowi sebagai calon presiden yang diusung PDI-P kelak.</p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Cerita Guru Honorer di Purworejo yang Bertahan dengan Gaji Rp 200 Ribu: Ini Panggilan Jiwa" href="https://www.tribunnews.com/regional/2020/06/09/cerita-guru-honorer-di-purworejo-yang-bertahan-dengan-gaji-rp-200-ribu-ini-panggilan-jiwa">Cerita Guru Honorer di Purworejo yang Bertahan dengan Gaji Rp 200 Ribu: Ini Panggilan Jiwa</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Apakah Kerusuhan di AS Menguntungkan Perekonomian Indonesia? Ini Kata Ekonom Bhima Yudhistira" href="https://www.tribunnews.com/nasional/2020/06/09/kerusuhan-di-as-bikin-dana-asing-mengalir-ke-indonesia">Apakah Kerusuhan di AS Menguntungkan Perekonomian Indonesia? Ini Kata Ekonom Bhima Yudhistira</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <p>Namun, menurut dia, akan lebih baik jika Risma turut bertarung dalam Pilkada DKI Jakarta 2022 terlebih dahulu.</p>
06-08 20:22:51.081: I/System.out(13405): <p>"Lalu, pada Pilpres 2024 bisa maju lagi bertarung menjadi calon presiden," ujar dia.</p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Pasutri Bandar Sabu Ditangkap di Hotel Mewah, Bermula dari Jeritan Perempuan Ingin Bunuh Diri" href="https://www.tribunnews.com/regional/2020/06/09/pasutri-bandar-sabu-ditangkap-di-hotel-mewah-bermula-dari-jeritan-si-perempuan-ingin-bunuh-diri">Pasutri Bandar Sabu Ditangkap di Hotel Mewah, Bermula dari Jeritan Perempuan Ingin Bunuh Diri</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <p class="baca"><strong>Baca: <a title="Video Gerak Lambat Brutalnya Pukulan Cody Garbdrandt yang Bikin Lawan Tepar Seketika" href="https://www.tribunnews.com/sport/2020/06/08/video-gerak-lambat-brutalnya-pukulan-cody-garbdrandt-yang-bikin-lawan-tepar-seketika">Video Gerak Lambat Brutalnya Pukulan Cody Garbdrandt yang Bikin Lawan Tepar Seketika</a></strong></p>
06-08 20:22:51.081: I/System.out(13405): <p>"Risma dan Ganjar punya potensi sebagai penganti Jokowi karena kedua tokoh tersebut yang punya panggung sebagai wali kota dan gubernur," kata Pangi.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Namun, yang lebih penting, kata dia, harus ada restu terlebih dahulu dari Megawati Soekarnoputri selaku Ketua Umum PDI-P untuk tiket calon Presiden 2024.</p>
06-08 20:22:51.081: I/System.out(13405): <p>Sebab, tidak mudah untuk mendapatkan tiket tersebut dari Megawati apabila Puan Maharani dan Prananda Prabowo yang merupakan putra-putrinya disiapkan menjadi capres atau cawapres lima tahun mendatang.</p>
06-08 20:22:51.081: I/System.out(13405): <figure class="op-interactive"><iframe src="https://www.youtube.com/embed/MhFMXGlbmCE" width="520" height="292" scrolling="no" frameborder="0" loading="lazy"></iframe></figure>
06-08 20:22:51.081: I/System.out(13405): <p>Artikel ini telah tayang di Kompas.com dengan judul <a href="https://nasional.kompas.com/read/2020/06/08/15104991/survei-elektabilitas-prabowo-turun-drastis-anies-kalah-dari-ganjar">"Survei: Elektabilitas Prabowo Turun Drastis, Anies Kalah dari Ganjar"</a>&nbsp;dan&nbsp;<a href="https://nasional.kompas.com/read/2019/08/05/05580091/ganjar-pranowo-dan-tri-rismaharini-dinilai-bisa-gantikan-sosok-jokowi">"Ganjar Pranowo dan Tri Rismaharini Dinilai Bisa Gantikan Sosok Jokowi".&nbsp;</a></p>
06-08 20:22:51.082: D/DnsProxyListener(5241): DNSDBG::dns addrinfo af 2
06-08 20:22:51.094: D/InputReader(5794): Input event [EV_SW]: value=1, when=4370.06447833000
06-08 20:22:51.094: D/InputReader(5794): processSwitch() : elapsed time = 0ms
06-08 20:22:51.094: D/InputManager(5794): notifySwitch: values=80, mask=80
06-08 20:22:51.094: V/WiredAccessoryManager(5794): notifyWiredAccessoryChanged: when=4370447833000 bits= mask=80
06-08 20:22:51.094: V/WiredAccessoryManager(5794): newName=h2w newState=0 headsetState=0 prev headsetState=0
06-08 20:22:51.094: E/WiredAccessoryManager(5794): No state change.
06-08 20:22:51.104: D/InputReader(5794): Input event [EV_SW]: value=0, when=4370.06457860000
06-08 20:22:51.104: D/InputReader(5794): processSwitch() : elapsed time = 0ms
06-08 20:22:51.104: D/InputManager(5794): notifySwitch: values=0, mask=80
06-08 20:22:51.104: V/WiredAccessoryManager(5794): notifyWiredAccessoryChanged: when=4370457860000 bits= mask=80
06-08 20:22:51.104: V/WiredAccessoryManager(5794): newName=h2w newState=0 headsetState=0 prev headsetState=0
06-08 20:22:51.104: E/WiredAccessoryManager(5794): No state change.
06-08 20:22:51.135: D/AndroidRuntime(13405): Shutting down VM
06-08 20:22:51.135: D/AndroidRuntime(13405): --------- beginning of crash
06-08 20:22:51.135: E/AndroidRuntime(13405): FATAL EXCEPTION: main
06-08 20:22:51.135: E/AndroidRuntime(13405): Process: mobile.android.tribun, PID: 13405
06-08 20:22:51.135: E/AndroidRuntime(13405): java.lang.NullPointerException: Attempt to invoke interface method 'int java.lang.Comparable.compareTo(java.lang.Object)' on a null object reference
06-08 20:22:51.135: E/AndroidRuntime(13405):    at java.util.Arrays.binarySearch0(Arrays.java:2367)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at java.util.Arrays.binarySearch(Arrays.java:2307)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.nodes.Entities$EscapeMode.a(Entities.java:4)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.nodes.Entities.a(Entities.java:2)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.Tokeniser.a(Tokeniser.java:42)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.TokeniserState.b(TokeniserState.java:16)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.TokeniserState.a(TokeniserState.java:1)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.TokeniserState$2.a(TokeniserState.java:1)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.Tokeniser.j(Tokeniser.java:5)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.TreeBuilder.c(TreeBuilder.java:1)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.TreeBuilder.b(TreeBuilder.java:2)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.HtmlTreeBuilder.b(HtmlTreeBuilder.java:4)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.parser.Parser.b(Parser.java:2)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at org.jsoup.Jsoup.a(Jsoup.java:2)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.tribunnews.app.widget.b.a(ContentConjuction.kt:20)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.tribunnews.app.widget.b.a(ContentConjuction.kt:2)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.tribunnews.app.DetailActivity$d.a(DetailActivity.kt:37)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.tribunnews.app.DetailActivity$d.a(DetailActivity.kt:1)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at androidx.lifecycle.LiveData.b(LiveData.java:6)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at androidx.lifecycle.LiveData.a(LiveData.java:8)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at androidx.lifecycle.LiveData.b(LiveData.java:14)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at androidx.lifecycle.t.b(MutableLiveData.java:1)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at androidx.lifecycle.LiveData$a.run(LiveData.java:5)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at android.os.Handler.handleCallback(Handler.java:873)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at android.os.Looper.loop(Looper.java:214)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at android.app.ActivityThread.main(ActivityThread.java:7032)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at java.lang.reflect.Method.invoke(Native Method)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
06-08 20:22:51.135: E/AndroidRuntime(13405):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
06-08 20:22:51.135: E/AndroidJUnitRunner(13405): An unhandled exception was thrown by the app.
06-08 20:22:51.137: I/AndroidJUnitRunner(13405): Bringing down the entire Instrumentation process.
java android kotlin jsoup html-parsing
1个回答
0
投票

为了使这个问题和答案完整,我粘贴了来自JSoup github的响应。NPE源自:org.jsoup.nodes.Entities$EscapeMode.a(Entities.java:4)这是代码

    public enum EscapeMode {
        /** Restricted entities suitable for XHTML output: lt, gt, amp, and quot only. */
        xhtml("entities-xhtml.properties", 4),
        /** Default HTML output entities. */
        base("entities-base.properties", 106),

[在将属性文件作为Jsoup issue #959中固定的Android资源加载时,似乎有问题。它已在版本[<1.11.1中修复,因此请尝试至少使用此版本。

© www.soinside.com 2019 - 2024. All rights reserved.