首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Okhttp.Builder中的ExceptionInInitializerError,带Multidex和Kitkat

Okhttp.Builder中的ExceptionInInitializerError,带Multidex和Kitkat
EN

Stack Overflow用户
提问于 2019-05-05 22:03:31
回答 2查看 5.7K关注 0票数 12

我在运行Kitkat 4.4.2并启用了Multidex的虚拟机上遇到了ExceptionInInitializerError异常。

代码语言:javascript
运行
复制
java.lang.ExceptionInInitializerError
    at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
    at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
    at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015)
    at myapp.utils.Utils.getHttpClientBuilder(Utils.java:131)
    at myapp.fragments.FragmentHome.getHome(FragmentHome.java:326)
    at 
myapp.fragments.FragmentHome.onViewCreated(FragmentHome.java:135)

我有以下库:

代码语言:javascript
运行
复制
implementation 'jp.wasabeef:recyclerview-animators:3.0.0'
implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.ogaclejapan.smarttablayout:utils-v4:2.0.0@aar'
implementation 'com.duolingo.open:rtl-viewpager:1.0.3'
implementation 'com.squareup.retrofit2:retrofit-converters:2.5.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.1'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
implementation 'com.karumi:dexter:5.0.0'
implementation 'com.nineoldandroids:library:2.4.0'
implementation 'org.jsoup:jsoup:1.11.3'
implementation 'saschpe.android:customtabs:2.0.0'

我正在使用下面的代码创建一个改装连接

代码语言:javascript
运行
复制
Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_LINK)
            .addConverterFactory(GsonConverterFactory.create())
            .client(Utils.getHttpClientBuilder())
            .build();

并使用以下代码获取构建器的实例

代码语言:javascript
运行
复制
public static OkHttpClient getHttpClientBuilder(){
    return new OkHttpClient.Builder()
            .readTimeout(60, TimeUnit.SECONDS)
            .connectTimeout(60, TimeUnit.SECONDS)
            .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
            .build();
}

getHttpClientBuilder()方法中调用"build()“时发生异常。

我还在AndroidManifest.xml中分配了一个默认应用程序,它扩展了MultiDexApplication,并在onCreate(Bundle bundle)中使用了MultiDex.install(this);

此问题仅在Kitkat中出现。你知道为什么吗?我尝试过将Okhttp库降级并将其升级到最新版本,但没有成功。

编辑:

从Retroft构建器中删除客户端不会改变任何事情。仍然显示错误。

EN

回答 2

Stack Overflow用户

发布于 2019-10-21 19:50:34

OkHttp 3.13+需要安卓5+

square/okhttp github页面提到最低要求是Android 5+。

Github link

Medium link

正如@Jaeger所提到的,@fancyjyl对于低于Android 5的版本,我们需要使用OkHttp 3.12.x,但不推荐使用它。

票数 10
EN

Stack Overflow用户

发布于 2019-05-10 11:19:58

显示应用程序依赖关系树

代码语言:javascript
运行
复制
+--- com.ogaclejapan.smarttablayout:utils-v4:2.0.0
+--- com.duolingo.open:rtl-viewpager:1.0.3
+--- com.squareup.retrofit2:retrofit-converters:2.5.0
+--- com.squareup.okhttp3:logging-interceptor:3.14.1
|    \--- com.squareup.okhttp3:okhttp:3.14.1 (*)
+--- com.squareup.okhttp3:okhttp:3.12.0 -> 3.14.1 (*)

您应该使用3.12.0日志记录拦截器

代码语言:javascript
运行
复制
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55992760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档