Kotlin Ktor客户端NoSuchMethodError

Kotlin Ktor客户端NoSuchMethodError,kotlin,gradle,telegram-bot,ktor,version-conflict-engine-exception,Kotlin,Gradle,Telegram Bot,Ktor,Version Conflict Engine Exception,我想写一个电报机器人并用它。在这个电报机器人中,我需要向另一个服务发出一些请求,所以我想使用ktor客户端库来实现这一点。但是,当我尝试实例化ktorhttpClient时,我得到以下异常: Exception in thread "main" java.lang.NoSuchMethodError: 'void io.ktor.util.collections.ConcurrentMap.<init>(io.ktor.util.Lock, int, int, k

我想写一个电报机器人并用它。在这个电报机器人中,我需要向另一个服务发出一些请求,所以我想使用ktor客户端库来实现这一点。但是,当我尝试实例化ktor
httpClient
时,我得到以下异常:

Exception in thread "main" java.lang.NoSuchMethodError: 'void io.ktor.util.collections.ConcurrentMap.<init>(io.ktor.util.Lock, int, int, kotlin.jvm.internal.DefaultConstructorMarker)'
at io.ktor.client.engine.cio.CIOEngine.<init>(CIOEngine.kt:32)
at io.ktor.client.engine.cio.CIO.create(CIOCommon.kt:23)
at io.ktor.client.HttpClientKt.HttpClient(HttpClient.kt:42)
at io.ktor.client.HttpClientJvmKt.HttpClient(HttpClientJvm.kt:21)
at io.ktor.client.HttpClientJvmKt.HttpClient$default(HttpClientJvm.kt)
at problem.ktor.MainKt.main(Main.kt:9)
at problem.ktor.MainKt.main(Main.kt)
并运行以下最小主功能:

import io.ktor.client.*

fun main() {
    HttpClient()
}

可能这很重要,我使用Java 15.0.2。

有问题的依赖关系是
com.github.kotlin telegram bot.kotlin telegram bot:webhook:6.0.4
。作为解决方法,您可以排除它,因为它只是一个示例:

implementation("com.github.kotlin-telegram-bot:kotlin-telegram-bot:6.0.4") {
    exclude(module = "webhook")
}

有问题的依赖项是
com.github.kotlin电报bot.kotlin电报bot:webhook:6.0.4
。作为解决方法,您可以排除它,因为它只是一个示例:

implementation("com.github.kotlin-telegram-bot:kotlin-telegram-bot:6.0.4") {
    exclude(module = "webhook")
}

我已经检查了build.gradle的电报机器人库。我没有发现它有任何依赖性。在样本中,他们使用ktor。在webhook示例中,他们使用ktor netty 1.2.6。如果我们在您的示例中使用ktor版本,它就可以工作。仍然存在一些依赖性警告shown@kaushik使用旧的ktor版本会给我的项目带来其他问题。如果telegram bot库不使用ktor(示例除外),您是否碰巧知道在一起使用两个库(ktor和telegram bot)时出现问题的原因?ktor和telegram bot使用的是不兼容的kotlin运行时版本。这可能就是问题所在。@kaushik您如何知道哪些版本不兼容?我看到库中有kotlin v1.4.21,我使用的是v1.4.30,这似乎没有太大的区别。我不太明白ktor的版本。但是这两个库本身都可以使用我的kotlin版本,所以v1.4.21中的一些bug也可以使用吗?Aleksei Tirman的答案是可行的。电报机器人正在将所有样本与库一起运送。因此,ktor 1.2.6也随库提供。排除它将解决您的问题。我已经检查了build.gradle中的电报机器人库。我没有发现它有任何依赖性。在样本中,他们使用ktor。在webhook示例中,他们使用ktor netty 1.2.6。如果我们在您的示例中使用ktor版本,它就可以工作。仍然存在一些依赖性警告shown@kaushik使用旧的ktor版本会给我的项目带来其他问题。如果telegram bot库不使用ktor(示例除外),您是否碰巧知道在一起使用两个库(ktor和telegram bot)时出现问题的原因?ktor和telegram bot使用的是不兼容的kotlin运行时版本。这可能就是问题所在。@kaushik您如何知道哪些版本不兼容?我看到库中有kotlin v1.4.21,我使用的是v1.4.30,这似乎没有太大的区别。我不太明白ktor的版本。但是这两个库本身都可以使用我的kotlin版本,所以v1.4.21中的一些bug也可以使用吗?Aleksei Tirman的答案是可行的。电报机器人正在将所有样本与库一起运送。因此,ktor 1.2.6也随库提供。排除它将解决您的问题。现在只有我检查过了,他们将所有样本与实际库捆绑在一起。我想知道为什么!是的,行得通。非常感谢你。我不知道这是可能的只有我检查过了,他们把所有的样本和实际的库捆绑在一起。我想知道为什么!是的,行得通。非常感谢你。我不知道这是可能的