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

集成Outlook API遇NoSuchMethodError问题求助(Retrofit+OkHttp)

排查你的OkHttp/Retrofit依赖版本冲突问题

嘿,这个NoSuchMethodError我太熟了——本质就是依赖版本不兼容搞的鬼,具体原因拆解如下:

你用的OkHttp 3.9.1需要依赖Okio 1.13.0,这个版本的BufferedSource类才有rangeEquals(JLokio/ByteString;)Z这个方法。但你的项目里肯定存在更低版本的Okio(大概率是被其他依赖间接引入的),运行时JVM加载了旧版本的Okio,自然找不到这个方法,就抛出错误了。

另外还有个小问题:你用的Retrofit 2.3.0默认依赖的是OkHttp 3.8.1,但你手动加了logging-interceptor 3.9.1,这会强制把OkHttp版本升级到3.9.1,这种跨版本混搭也容易引发兼容问题。


给你两个靠谱的解决方案:

方案1:统一OkHttp版本(适配现有Retrofit 2.3.0,推荐)

把logging-interceptor的版本改成和Retrofit 2.3.0匹配的3.8.1,这样所有OkHttp相关依赖版本一致,Maven会自动拉取对应的Okio版本,从根源避免冲突:

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>logging-interceptor</artifactId>
    <version>3.8.1</version>
</dependency>

方案2:升级Retrofit到兼容OkHttp 3.9.1的版本

如果你不想改OkHttp的版本,可以把Retrofit和它的Jackson转换器都升级到2.4.0及以上——从Retrofit 2.4.0开始,官方就支持OkHttp 3.9.0+了:

<!-- 升级Retrofit核心包 -->
<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>retrofit</artifactId>
    <version>2.4.0</version>
</dependency>
<!-- 同步升级Jackson转换器 -->
<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>converter-jackson</artifactId>
    <version>2.4.0</version>
</dependency>

额外兜底方案:强制指定Okio版本

如果上面两个方案都没解决问题,你可以直接显式添加Okio依赖,指定版本为1.13.0(就是OkHttp 3.9.1要求的版本),确保JVM加载正确的Okio:

<dependency>
    <groupId>com.squareup.okio</groupId>
    <artifactId>okio</artifactId>
    <version>1.13.0</version>
</dependency>

验证方法

改完依赖后,跑一下mvn dependency:tree命令,看看输出里okio的版本是不是统一的,有没有多个版本共存的情况——如果只有1.13.0(或者和OkHttp匹配的版本),那就没问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:29:46