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

Kotlin协程调用delay()函数抛出java.lang.NoSuchMethodError如何解决

问题根因

你遇到的NoSuchMethodError是kotlinx-coroutines依赖版本冲突导致的:

  • delay-p9JZ4hM是kotlinx-coroutines 1.6.0及以上版本对delay函数做二进制优化后的带签名方法名,低版本的coroutines运行库没有这个方法
  • 你的项目里Ktor依赖的coroutines版本,和你手动引入的coroutines版本不一致:编译代码时用的是高版本的coroutines API,实际运行时加载的是低版本的coroutines jar包,调用delay时就会找不到对应方法
  • 移除delay后代码正常运行,是因为逻辑里没有触发到新版本coroutines才有的方法,不会暴露版本冲突问题
修复步骤
  1. 先排查项目依赖树,找出冲突的coroutines版本:
    • Gradle项目执行:./gradlew dependencies | grep kotlinx-coroutines
    • Maven项目执行:mvn dependency:tree | grep kotlinx-coroutines
  2. 统一所有coroutines相关依赖的版本,建议直接对齐你当前用的Ktor版本要求的coroutines版本,不要单独指定更低版本的coroutines依赖
  3. 可选优化:你当前代码每次循环都新建、销毁HttpClient会产生不必要的资源开销,建议把HttpClient改为类成员变量,初始化一次即可重复使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 02:36:00