2016-05-16 43 views
2

實例我對着下面的錯誤錯誤OkHttp Android中

java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier 

當我想開發使用OkHttpClient數據庫的連接。

我在gradle中包含了下列依賴項: compile 'com.squareup.okhttp3:okhttp:3.2.0'

+0

發佈您的'build.gradle'和類使用OkHttp。 –

+1

你還需要添加編譯'com.squareup.okio:okio:1.6.0' – Dilip

回答

1

對於OkHttp圖書館管理員的工作,你必須包括你的build.gradle文件這兩個依賴:

compile 'com.squareup.okhttp3:okhttp:3.3.1' 
compile 'com.squareup.okio:okio:1.8.0' 

或者,您也可以下載OkHttp jarOkio jar,並把那些在你的libs文件夾。請致電OkHttp pageOkio page

1

我沒有足夠的知名度點擊發表評論。所以,我把它寫出來作爲答案。其他答案不適合我。我的build.gradle中已經有okhttp3和okio依賴關係。 這不是一個確切的答案,但分析問題,因爲即使我有完全相同的問題。所以,我試着調試一下。

堆棧跟蹤:

java.lang.NoClassDefFoundError: okhttp3.internal.tls.OkHostnameVerifier 
    at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:364) 
    at okhttp3.OkHttpClient.<init>(OkHttpClient.java:151) 

所以,我反編譯我的APK,發現OkHostnameVerifier類是不存在於我的APK,即使它存在於source of Okhttp3。因此,可能是gradle會刪除這些文件,將它們視爲未使用的代碼,誤報。

但是,如果我在build.gradle中啓用了minifyEnabled,它將修復該問題並保留APK中的所有類文件。 所以,我認爲這是一個proguard中的錯誤。

+1

也許這是一個proguard問題? – Mauker

+0

@Mauker權利,proguard問題,而不是gradle。感謝您的糾正! –