Ktor-клиент NoSuchMethodError

Я хочу написать бота для телеграмм и использовать для этого эту библиотеку из Github . В этом боте Telegram мне нужно сделать несколько запросов к другой службе, поэтому я хочу использовать для этого клиентскую библиотеку 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)

Я сделал новый проект и сузил проблему до библиотеки ботов Telegram, которая явно конфликтует с библиотекой kotr. Я предполагаю некоторый конфликт версий библиотеки kotr, потому что здесь происходит исключение. Как я могу разрешить конфликт?

Вот минимальный воспроизводимый пример. Используйте следующий файл build.gradle.kts:

      import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    application
    kotlin("jvm") version "1.4.30"
}

repositories {
    mavenCentral()
    maven(url = "https://jitpack.io")
}

dependencies {
    implementation("io.ktor:ktor-client-core:1.5.2")
    implementation("io.ktor:ktor-client-cio:1.5.2")
    implementation("com.github.kotlin-telegram-bot:kotlin-telegram-bot:6.0.4")
}

И запустите следующую минимальную основную функцию:

      import io.ktor.client.*

fun main() {
    HttpClient()
}

Может это важно, пользуюсь Java 15.0.2.

1 ответ

Проблемная зависимость 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")
}
Другие вопросы по тегам