Android APP 编译出错了java.lang.VerifyError 求解决方案???

发布于 2022-09-02 15:59:47 字数 715 浏览 14 评论 0

编译出错了
终端和AS编译都有问题

编译错误信息如下:

Error:Execution failed for task ':app:compileReleaseJavaWithJavac'.
> java.lang.VerifyError: Expecting a stackmap frame at branch target 23
  Exception Details:
    Location:
      com/example/Eventbus/annotation/ThreadMode.<init>(Ljava/lang/String;I)V @12: ifeq
    Reason:
      Expected stackmap frame at this location.
    Bytecode:
      0000000: 2a2b 1cb7 0006 b200 3db6 0041 9900 0bb2
      0000010: 0047 1249 b600 4fb1   

具体开发环境详细信息
Mac OX 10.10.5
Android Studio 2.0
Android SDK 23.0.2
Gradle 2.10
JDK 1.8_77
Maven 3.2.3
Groovy 2.4.6

各位大虾们有遇到这个问题么???在线等....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

-柠檬树下少年和吉他 2022-09-09 15:59:47

你可能用到了什么库,或者某代码中包含了一些高版本不支持的语法,或者库中的字节码有什么特殊的高版本jdk不兼容的情况。
这个问题之前我也遇到过,当时是因为擅自修改了jar包中的字节码文件却修改错了所致。
下面是stackoverflow上看到的回复,可做参考:

Java 7 introduced a stricter verification and changed the class format a bit -- to contain a stack map, used to verify that code is correct. The exception you see, means that some method doesn't have a valid stack map.

Java version or bytecode instrumentation could both be to blame. Usually this means that a library that the application uses, generates invalid bytecode that doesn't pass the stricter verification. So nothing else than reporting it as a bug to the library can be done by the developer.

As a workaround you can add -noverify to the JVM arguments in order to disable verification. In Java 7 it was also possible to use -XX:-UseSplitVerifier to use the less strict verification method, but that option was removed in Java 8.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文