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

Spring Boot集成Minio报错okhttp3.RequestBody.create方法不存在

问题根因

报错属于典型的依赖版本不兼容导致的NoSuchMethodError:

  • Minio 8.3.9 内部依赖OkHttp 4.x系列,代码中调用的okhttp3.RequestBody.create(byte[], MediaType)方法是OkHttp 4.x提供的重载方法。OkHttp 3.x全版本(包括你手动引入的3.14.4、Spring Boot 2.2.0默认管理的3.x版本)仅提供RequestBody.create(MediaType, byte[])签名的方法,参数顺序相反,不存在Minio调用的目标方法,因此触发报错。
  • 你之前尝试的两种方案都停留在OkHttp 3.x版本范围内,无法解决兼容性问题。
解决方案

按以下步骤操作即可修复:

  • 替换pom.xml中的okhttp依赖,使用兼容Java 8的OkHttp 4.x版本(注意OkHttp 4.10.0及以上版本要求Java 11运行环境,Java 8场景下最高可用版本为4.9.3),同时排除Minio及其他依赖传递引入的OkHttp版本,避免类冲突,配置参考如下:
<!-- Minio 依赖 -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.9</version>
    <exclusions>
        <!-- 排除Minio传递引入的okhttp,统一使用指定版本 -->
        <exclusion>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 兼容Java 8的OkHttp 4.x版本 -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.3</version>
</dependency>
  • 执行Maven命令排查全依赖树,确认没有其他依赖传递引入OkHttp 3.x版本:
mvn dependency:tree -Dincludes=com.squareup.okhttp3:okhttp

如果输出结果中存在3.x版本的okhttp,在对应引入该依赖的配置块中添加exclusion规则排除3.x版本即可。

  • 如果你是打WAR包部署到外部Tomcat容器,需要检查Tomcat根目录下的lib文件夹,若存在OkHttp 3.x的jar包需要删除,避免Tomcat类加载器优先加载自身lib目录下的低版本包。
  • 执行以下命令清理Maven缓存、重新拉取依赖并打包,避免旧版本依赖残留:
mvn clean install -U
验证方式

启动项目后可通过断点调试或执行类加载路径打印代码,确认运行时加载的OkHttp版本为4.9.3,再调用Minio相关接口即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:39:12