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

Java17+OkHttp4.9.3出现NoClassDefFoundError:okio/Buffer问题求助

问题分析与解决方案

这个NoClassDefFoundError: okio/Buffer异常本质是模块系统下的依赖访问权限或依赖传递问题,结合你的配置,问题出在两个核心点:

1. 重复的Okio依赖导致模块冲突

你同时添加了okio-3.3.0和okio-jvm-3.3.0依赖,这两个是Okio针对JVM平台的重复发布(Okio 3.x的多平台库中,okio包已经包含完整的JVM变体)。重复依赖会导致模块路径中出现两个同名模块,JVM无法正确加载Okio的类文件。

解决: 删除implementation ':okio-jvm-3.3.0',只保留implementation ':okio-3.3.0'(建议使用完整Maven坐标com.squareup.okio:okio:3.3.0,避免本地依赖的路径或版本匹配问题)。

2. Module-info缺少依赖传递声明

在JPMS模块系统中,requires关键字默认不会传递依赖。即使你的模块显式声明了requires okio;,OkHttp模块自身可能因无法正确解析到Okio模块的依赖链路,导致初始化时找不到okio/Buffer类。

解决: 在module-info.java中修改OkHttp的依赖声明,添加transitive关键字,让OkHttp的依赖(包括Okio、Kotlin标准库)自动传递到你的模块:

module your.module.name {
    requires transitive okhttp3;
    requires okio;
    requires kotlin.stdlib;
}

这个配置会确保OkHttp模块自身能加载所需的依赖类,同时也让你的模块无需重复声明OkHttp的间接依赖。

额外验证点

确保你使用的OkHttp 4.9.3和Okio 3.3.0 jar包是带有module-info.java的正式模块化版本(如果是本地jar,可解压检查是否包含module-info.class文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:07:21