Android N 中使用 jsoup 下载数据时出现 java.lang.VerifyError

标签 java android jsoup verifyerror

我为新的 Android N 版本编译了 Android 应用程序,然后尝试在模拟器上测试它。它正常运行,直到我尝试使用“jsoup”库下载和解析一些网站数据。然后我得到这个 java.lang.VerifyError:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                 Process: com.masrepus.vplanapp, PID: 6584
                                                                 java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                     at android.os.AsyncTask$3.done(AsyncTask.java:318)
                                                                     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                     at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                     at java.lang.Thread.run(Thread.java:761)
                                                                  Caused by: java.lang.VerifyError: Verifier rejected class org.jsoup.parser.HtmlTreeBuilderState$7: boolean org.jsoup.parser.HtmlTreeBuilderState$7.process(org.jsoup.parser.Token, org.jsoup.parser.HtmlTreeBuilder) failed to verify: boolean org.jsoup.parser.HtmlTreeBuilderState$7.process(org.jsoup.parser.Token, org.jsoup.parser.HtmlTreeBuilder): [0x140B] Invalid reg type for array index (Reference: org.jsoup.nodes.Node[]) (declaration of 'org.jsoup.parser.HtmlTreeBuilderState$7' appears in /data/app/com.masrepus.vplanapp-2/base.apk)
                                                                     at org.jsoup.parser.HtmlTreeBuilderState.<clinit>(HtmlTreeBuilderState.java:246)
                                                                     at org.jsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:53)
                                                                     at org.jsoup.parser.Parser.parseInput(Parser.java:30)
                                                                     at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:81)
                                                                     at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:517)
                                                                     at org.jsoup.helper.HttpConnection.post(HttpConnection.java:174)
                                                                     at com.masrepus.vplanapp.network.AsyncDownloader.updateAvailableFilesList(AsyncDownloader.java:961)
                                                                     at com.masrepus.vplanapp.network.AsyncDownloader.downloadVplan(AsyncDownloader.java:237)
                                                                     at com.masrepus.vplanapp.network.AsyncDownloader.doInBackground(AsyncDownloader.java:135)
                                                                     at com.masrepus.vplanapp.network.AsyncDownloader.doInBackground(AsyncDownloader.java:113)
                                                                     at android.os.AsyncTask$2.call(AsyncTask.java:304)
                                                                     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                                                                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                                                                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                                                                     at java.lang.Thread.run(Thread.java:761) 

在研究VerifyErrors时,我遇到了一些解决方案,例如清理项目构建文件夹。但这些解决方案没有帮助。 我想知道的是,[0x140B]数组索引的无效reg类型是什么意思。这可能是我必须解决的问题,但我不知道如何解决。

编辑: 因此,我更深入地研究了这个问题,并将崩溃定位在 org.jsoup.parser.HtmlTreeBuilderState 中名为“InBody”的 block 内。 ,第 244-759 行。我不知道为什么,但是当我在那里设置断点时,程序永远不会在那里停止,所以我不知道崩溃发生在这个 block 内的确切位置。但由于错误消息谈到某种数组索引,我认为它可能是我发现的与数据类型“Element”有关的 6 for 循环之一:它们位于第 305、388、561、582、602 和 640 行

最佳答案

禁用插孔。

当我启用 jack 时,我遇到了同样的错误。我禁用了jack并编译,没有错误。然后我将jsoup源代码复制到我的项目文件夹中,启用jack并编译,没有错误。所以我认为这是jill这个将*.class转换为*.jack的工具的bug。

关于Android N 中使用 jsoup 下载数据时出现 java.lang.VerifyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38059373/

相关文章:

java - 从 Java 7 调用 SQLCMD

java - 如果用户没有一直下拉,如何使Android pulltorefresh弹回?

android - 为什么我在 Android 12 模拟器上运行时在日志中看到 EGL_emulation app_time_stats?

java - 无法在 jsoup 中使用文档

Android Jsoup 获取完整版网站

java - 如何通过部署他们的 war 从 Tomcat 在本地运行多个依赖应用程序?

java - JSP编译和Weblogic 10.3.4

java - getTableCellRendererComponent 被反复调用并使 CPU 使用率达到 100%

android - Dart/Flutter 如何编译到 Android 上?

java - 从 html 中提取所有可见文本