Android解决---第三方库重复引用造成的 java.lang.NoSuchMethodError问题
程序员文章站
2022-03-16 17:55:46
在当前项目开发过程中引入了了腾讯云对象存储COS的库文件之后,implementation 'com.tencent.qcloud:cosxml:5.5.5'项目死活都跑不起来;报了以下的错误:完整的错误日志如下: java.lang.NoSuchMethodError: No virtual method getHttpUrlChecked(Ljava/lang/String;)Lokhttp3/HttpUrl; in class Lokhttp3/internal/Internal; or...
在当前项目开发过程中引入了了腾讯云对象存储COS的库文件之后,
implementation 'com.tencent.qcloud:cosxml:5.5.5'
项目死活都跑不起来;报了以下的错误:
完整的错误日志如下:
java.lang.NoSuchMethodError: No virtual method getHttpUrlChecked(Ljava/lang/String;)Lokhttp3/HttpUrl; in class Lokhttp3/internal/Internal; or its super classes (declaration of 'okhttp3.internal.Internal' appears in /data/app/com.hlm.wohe-XpG2pwvZh31wjFos-V_Pcw==/base.apk!classes4.dex)
at okhttp3.internal.huc.HttpURLConnectionImpl.newHttpEngine(HttpURLConnectionImpl.java:358)
at okhttp3.internal.huc.HttpURLConnectionImpl.initHttpEngine(HttpURLConnectionImpl.java:343)
at okhttp3.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:412)
at okhttp3.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:551)
at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:110)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
这里报的是java.lang.NoSuchMethodError异常,,okhttp3库文件方法找不到,可能的原因就是引用了最新的库文件,找不到这个方法,所以要去除重复的库。
这个时候就变成了解决okhttp3库文件重复引用的问题;操作如下
运用exclude group 关键字就可以
implementation ('com.tencent.qcloud:cosxml:5.5.5'){ //所加的第三方框架
exclude group:'com.squareup.okhttp3', module: 'okhttp' // 加载时排除框架中的okhttp包
}
这样不用框架中的okhttp包,而用自己项目中的okhttp包
本文地址:https://blog.csdn.net/eyishion/article/details/112604319