Skip to content

Instantly share code, notes, and snippets.

@jamesonwilliams
Last active October 5, 2021 05:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamesonwilliams/8ab7237083467ed3cb8680115a3e3829 to your computer and use it in GitHub Desktop.
Save jamesonwilliams/8ab7237083467ed3cb8680115a3e3829 to your computer and use it in GitHub Desktop.
OkHttp 4.3.1 didn't find class "org.conscrypt.ConscryptHostnameVerifier" on path

OkHttp 4.3.1 emits log spam on Android, even when using it in trivial way.

Example code:

Disposable disposable = Single.fromCallable(() ->
    new OkHttpClient().newCall(new Request.Builder()
        .url("https://raw.githubusercontent.com/square/okhttp/master/README.md")
        .get()
        .build())
    .execute()
    .body()
    .string()
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
    textView::setText,
    failure -> textView.setText(Log.getStackTraceString(failure))
);

This emits:

I: Rejecting re-init on previously-failed class java.lang.Class<okhttp3.internal.platform.ConscryptPlatform$configureTrustManager$1>: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/conscrypt/ConscryptHostnameVerifier;
I:     at okhttp3.internal.platform.android.SocketAdapter okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion.buildIfSupported() (ConscryptSocketAdapter.kt:62)
I:     at void okhttp3.internal.platform.AndroidPlatform.<init>() (AndroidPlatform.kt:44)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported() (AndroidPlatform.kt:212)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.findPlatform() (Platform.kt:207)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.access$findPlatform(okhttp3.internal.platform.Platform$Companion) (Platform.kt:169)
I:     at void okhttp3.internal.platform.Platform.<clinit>() (Platform.kt:170)
I:     at void okhttp3.OkHttpClient.<init>(okhttp3.OkHttpClient$Builder) (OkHttpClient.kt:220)
I:     at void okhttp3.OkHttpClient.<init>() (OkHttpClient.kt:212)
I:     at java.lang.String okhttp.conscrypt.issue.MainActivity.lambda$onCreate$0() (MainActivity.java:28)
I:     at java.lang.Object okhttp.conscrypt.issue.-$$Lambda$MainActivity$HFmP7xhC1oUdC6d5U0mKIdLTGns.call() (lambda:-1)
I:     at void io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(io.reactivex.SingleObserver) (SingleFromCallable.java:44)
I:     at void io.reactivex.Single.subscribe(io.reactivex.SingleObserver) (Single.java:3666)
I:     at void io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run() (SingleSubscribeOn.java:89)
I:     at void io.reactivex.Scheduler$DisposeTask.run() (Scheduler.java:578)
I:     at void io.reactivex.internal.schedulers.ScheduledRunnable.run() (ScheduledRunnable.java:66)
I:     at java.lang.Object io.reactivex.internal.schedulers.ScheduledRunnable.call() (ScheduledRunnable.java:57)
I:     at void java.util.concurrent.FutureTask.run() (FutureTask.java:237)
I:     at void java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run() (ScheduledThreadPoolExecutor.java:272)
I:     at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133)
I:     at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607)
I:     at void java.lang.Thread.run() (Thread.java:761)
I: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.conscrypt.ConscryptHostnameVerifier" on path: DexPathList[[zip file "/data/app/okhttp.conscrypt.issue-2/base.apk"],nativeLibraryDirectories=[/data/app/okhttp.conscrypt.issue-2/lib/x86, /system/lib, /vendor/lib]]
I:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
I:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
I:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I:     at okhttp3.internal.platform.android.SocketAdapter okhttp3.internal.platform.android.ConscryptSocketAdapter$Companion.buildIfSupported() (ConscryptSocketAdapter.kt:62)
I:     at void okhttp3.internal.platform.AndroidPlatform.<init>() (AndroidPlatform.kt:44)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.AndroidPlatform$Companion.buildIfSupported() (AndroidPlatform.kt:212)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.findPlatform() (Platform.kt:207)
I:     at okhttp3.internal.platform.Platform okhttp3.internal.platform.Platform$Companion.access$findPlatform(okhttp3.internal.platform.Platform$Companion) (Platform.kt:169)
I:     at void okhttp3.internal.platform.Platform.<clinit>() (Platform.kt:170)
I:     at void okhttp3.OkHttpClient.<init>(okhttp3.OkHttpClient$Builder) (OkHttpClient.kt:220)
I:     at void okhttp3.OkHttpClient.<init>() (OkHttpClient.kt:212)
I:     at java.lang.String okhttp.conscrypt.issue.MainActivity.lambda$onCreate$0() (MainActivity.java:28)
I:     at java.lang.Object okhttp.conscrypt.issue.-$$Lambda$MainActivity$HFmP7xhC1oUdC6d5U0mKIdLTGns.call() (lambda:-1)
I:     at void io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(io.reactivex.SingleObserver) (SingleFromCallable.java:44)
I:     at void io.reactivex.Single.subscribe(io.reactivex.SingleObserver) (Single.java:3666)
I:     at void io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run() (SingleSubscribeOn.java:89)
I:     at void io.reactivex.Scheduler$DisposeTask.run() (Scheduler.java:578)
I:     at void io.reactivex.internal.schedulers.ScheduledRunnable.run() (ScheduledRunnable.java:66)
I:     at java.lang.Object io.reactivex.internal.schedulers.ScheduledRunnable.call() (ScheduledRunnable.java:57)
I:     at void java.util.concurrent.FutureTask.run() (FutureTask.java:237)
I:     at void java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run() (ScheduledThreadPoolExecutor.java:272)
I:     at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133)
I:     at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607)
I:     at void java.lang.Thread.run() (Thread.java:761)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment