我遇到以下错误
java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier
当我想使用 OkHttpClient 开发与数据库的连接时。
我在gradle中包含了以下依赖项;
compile 'com.squareup.okhttp3:okhttp:3.2.0'
答案 0 :(得分:1)
要使OkHttp
库正常工作,您必须在build.gradle
文件中包含这两个依赖项:
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.squareup.okio:okio:1.8.0'
或者,您可以下载here AND OkHttp jar,并将其放在libs
文件夹下。
有关详细信息,请访问Okio jar和OkHttp page。
答案 1 :(得分:1)
我没有足够的声望点将其作为评论发布。所以,我把它写成答案。其他答案对我没用。我的build.gradle中已经有okhttp3和okio依赖项。 这不是一个确切的答案,但对问题的分析,即使我有完全相同的问题。所以,我试着稍微调试一下。
Stacktrace:
java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier
at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:364)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:151)
所以,我反编译我的APK并发现我的APK中没有OkHostnameVerifier类,即使它出现在source of Okhttp3中。因此,可能是gradle正在删除那些文件,将它们视为未使用的代码,这是一种误报。
但是如果我在build.gradle中启用minifyEnabled,它会修复该问题并将所有这些类文件保存在APK中。 所以,我认为这是proguard中的一个错误。