【问题标题】:Java / Proguard: Find out why jar does not Validate/Verify?Java / Proguard:找出为什么 jar 不验证/验证?
【发布时间】:2016-12-09 00:30:57
【问题描述】:

遇到此错误(正如其他人之前遇到的那样): java.lang.VerifyError: Expecting a stackmap frame at branch target 18

我通过在 jdk 选项中添加 -noverify 找到了解决方法。当然这不是实际的解决方案,所以我试图找出这个 jar 到底有什么问题以及为什么它没有成功验证......

这里有两个罐子,知道验证/不验证: - 验证: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,它为两者都吐出了这么多错误。

问题是由proguard引起的,因为禁用proguard缩小会使jar再次验证。

有什么方法可以找出为什么jar 不能用java 验证?

【问题讨论】:

    标签: java android validation jar proguard


    【解决方案1】:

    这些 jar 文件很可能已被 ProGuard 混淆/生成,并且不包含 StackMapFrame 属性。由于这些jar主要用于Android开发,所以不需要保留这些属性,因为Dalvik不支持这些属性。

    如果您想在普通 Java 应用程序中使用它们,您需要创建具有适当 StackMapFrame 属性的 jar 文件(或使用 -noverify 选项)。实际上,你也可以使用 ProGuard,看看User Guide

    【讨论】:

    猜你喜欢
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2013-08-30
    相关资源
    最近更新 更多