You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Retrofit调用API时出现OkHttp Dispatcher致命异常,启用Java8无效

解决Retrofit + OkHttp的BootstrapMethodError异常(ClassCastException: Bootstrap method returned null)

我之前也遇到过一模一样的异常,折腾了好一会儿才解决。结合你的情况(minSDK 26、已启用Java 8),这个BootstrapMethodError通常和Retrofit/OkHttp的版本兼容性、编译配置或者混淆规则有关,下面是几个你可以尝试的解决方案:

1. 确保Retrofit与OkHttp版本兼容且为稳定版

旧版本的Retrofit在Java 8环境下的字节码处理可能存在bug,建议升级到最新的稳定版本,并且保证Retrofit和OkHttp的版本匹配(比如Retrofit 2.9.0+搭配OkHttp 4.9.0+)。在你的Module级build.gradle中更新依赖:

dependencies {
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.okhttp3:okhttp:4.10.0'
    // 如果使用Gson转换器,同步版本
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

2. 检查Java 8编译配置是否完整

虽然你提到已启用Java 8,但有时候配置可能不完整。确保你的Module级build.gradle配置如下:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // 若项目包含Kotlin代码,需添加以下配置
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

3. 添加正确的ProGuard/R8混淆规则(若开启混淆)

如果应用开启了混淆,Retrofit和OkHttp的核心类被混淆后会导致反射调用失败,进而触发该异常。在proguard-rules.pro中添加以下规则:

# Retrofit 混淆规则
-keep class retrofit2.** { *; }
-keep interface retrofit2.** { *; }
-keepclasseswithmembers class * {
    @retrofit2.http.* <methods>;
}

# OkHttp 混淆规则
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-dontwarn okio.**

4. 排查并解决依赖冲突

第三方库可能会引入旧版本的OkHttp或Retrofit,导致版本冲突。执行以下命令查看依赖树:

# Mac/Linux
./gradlew app:dependencies

# Windows
gradlew.bat app:dependencies

找到冲突的版本后,在build.gradle中强制统一版本:

configurations.all {
    resolutionStrategy {
        force 'com.squareup.okhttp3:okhttp:4.10.0'
        force 'com.squareup.retrofit2:retrofit:2.9.0'
    }
}

额外检查点

如果以上方法都无效,检查你的ServiceGenerator类中OkHttpClient的初始化代码,确认是否使用了过时API或存在错误配置(比如自定义拦截器未处理异常)。

内容的提问来源于stack exchange,提问作者johnzilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:54:06