java.lang.VerifyError 错误解决方法

一般地,java.lang.VerifyError 是说 JVM 在加载一个类时,会去校验类的正确性,只有类文件不合法才会报这个Error。

这个错误是集成三方sdk的时候遇到的看到这个错误,真是蒙了,查阅文档后,各种说法都有,也算是增加了对这个异常的理解,参考过的文章见底部,虽然看了

很多,但并没有直接找到原因,各种尝试快两天,后来仔细看出问题的类,FileUploadUtil ,这个类里有用到联网的三方库,有看了下jar包,版本一个是

com.loopj.android:android-async-http:1.4.9,android-async-http:1.4.6, 三方SDK里提供的是1.4.6的jar包,但是项目里有个1.4.9的依赖,编译时冲突估计就去掉

了,没想到居然还隐藏了这个大bug,三方库里的用到的那个问题和新包里依赖的那个文件有差别,具体的原因请看延伸阅读第一篇文章,非常详细,相信读过后

即使不能完全读懂也会有收获的。

说到问题的解决,还是要查看错误log,这个错误和FileUploadUtil类有关,这个类的构造加载时加载了一个静态方法

public static SSLSocketFactory createSSLSocketFactory() {
    MySSLSocketFactory var0 = null;

    try {
        KeyStore var1 = KeyStore.getInstance(KeyStore.getDefaultType());
        var1.load((InputStream)null, (char[])null);
        var0 = new MySSLSocketFactory(var1);
    } catch (Exception var2) {
        var2.printStackTrace();
    }

    return var0;
}

上面的方法里用到了MySSLSocketFactory 的构造,而MySSLSocketFactory 类里又有很多静态方法,用到了 android-async-http jar

包中的方法,so,及时不太懂也能推断出是这个jar的问题,所以,还是好好看log,一步一步推断。。。



延伸阅读:

https://yrom.net/blog/2016/08/22/java-lang-verifyerror-on-android/

https://stackoverflow.com/questions/100107/causes-of-getting-a-java-lang-verifyerror


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值