遇到此错误(就像其他人以前遇到的那样):java.lang.VerifyError: Expecting a stackmap frame at branch target 18
通过将-noverify添加到jdk选项,我找到了一个解决办法。当然,这不是真正的解决方案,所以我正在试图找出jar到底出了什么问题以及为什么它不能成功地验证.
下面是两个jars,它们都知道要验证/不验证:-验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.2.25/ -不是验证:https://repo.leanplum.com/com/leanplum/Leanplum/1.3.1/Leanplum-1.3.1.jar
我试着深入了解为什么这不是有效的,尝试了asm,它为两者都提出了这么多的错误。
问题是由防护引起的,因为禁用防护器的缩小使得jar再次验证。
有没有办法找出为什么jar不使用java进行验证?
发布于 2016-12-09 15:52:00
这些jars很可能是由ProGuard混淆/生成的,并且不包含StackMapFrame属性。由于这些jars主要用于Android开发,因此不需要保留这些属性,因为Dalvik不支持这些属性。
如果要在普通Java应用程序中使用它们,则需要创建具有适当StackMapFrame属性的jar文件(或使用-noverify选项)。实际上,您也可以使用ProGuard,看看用户指南。
https://stackoverflow.com/questions/41051236
复制相似问题