我们正在使用最新的JDK 7(u45)和ProGuard 4.10版
最近我们的分发失败,混淆后,出现以下错误:
Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 155 Exception Details: Location: com/bla/bla/service/ioc/SpringBootstrap.c()V @0: getstatic Reason: Expected stackmap frame at this location. Bytecode: 0000000: b200 73b6 008b 9900 82b2 0073 b800 933b 0000010: 1a99 0074 b200 73b6 008d 9900 6bb2 0074 0000020: 1221 b600 cfb8 0092 4c2b b600 9c12 1db9 ... Exception Handler Table: bci [0,152] => handler: 155 at java.lang.class.getDeclaredMethods0(Native Method) at java.lang.class.privateGetDeclaredMethods(UnkNown Source) at java.lang.class.getmethod0(UnkNown Source) at java.lang.class.getmethod(UnkNown Source) at sun.launcher.LauncherHelper.getMainMethod(UnkNown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(UnkNown Source)
我在StackOverflow上发现了关于这个主题的几个讨论,比如
> java-lang-verifyerror-expecting-a-stackmap-frame-at-branch-target-jdk-1-7
> java-lang-verifyerror-expecting-a-stackmap-frame
> understanding-how-to-resolve-inconsistent-stackmap-frames-exception
> java-7-inconsistent-stackmap-frames-need-help-understanding-why-solution-wor
从我所理解的是,java 7使用更严格的验证,并为类验证代码引入了堆栈映射.所以在我的混淆过程中,这个地图似乎已经被破坏了,因为只有这个异常发生,当我用proguard模糊我的项目时.
使用-XX禁用验证:-UseSplitVerifier并启动构建的jar有帮助,但我不确定是否应该是处理此问题的方式.
所以我想知道其他人是否有一个模拟错误?或者如果有人甚至可以知道一种解决这个问题的具体方法,例如通过调整混淆过程的proguard konfiguration?
解决方法
原文地址:https://www.jb51.cc/java/123203.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。