kotlinktorkoin

Koin error when starting ktor application on ktor version 3


After upgrading ktor to "3.0.0-beta-1" to test it out, and upgrading koin to the latest version "3.6.0-wasm-alpha2" I get this error when starting the application.

It points to a line within the koin library itself, downgrading back to ktor 2.3.7 resolves the problem

Exception in thread "main" java.lang.NoSuchMethodError: 'io.ktor.events.Events io.ktor.server.application.ApplicationEnvironment.getMonitor()'
    at org.koin.ktor.plugin.KoinPluginKt.setupMonitoring(KoinPlugin.kt:54)
    at org.koin.ktor.plugin.KoinPluginKt$Koin$2.invoke(KoinPlugin.kt:38)
    at org.koin.ktor.plugin.KoinPluginKt$Koin$2.invoke(KoinPlugin.kt:35)
    at io.ktor.server.application.CreatePluginUtilsKt.setupPlugin(CreatePluginUtils.kt:300)
    at io.ktor.server.application.CreatePluginUtilsKt.createPluginInstance(CreatePluginUtils.kt:269)
    at io.ktor.server.application.CreatePluginUtilsKt.access$createPluginInstance(CreatePluginUtils.kt:1)
    at io.ktor.server.application.CreatePluginUtilsKt$createApplicationPlugin$2.install(CreatePluginUtils.kt:90)
    at io.ktor.server.application.CreatePluginUtilsKt$createApplicationPlugin$2.install(CreatePluginUtils.kt:83)
    at io.ktor.server.application.ApplicationPluginKt.install(ApplicationPlugin.kt:100)
    at com.plugins.DiKt.configureDi(Di.kt:10)
    at com.ApplicationKt.module(Application.kt:15)
    at com.ApplicationKt.module$default(Application.kt:12)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:578)
    at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
    at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Static.call(CallerImpl.kt:106)
    at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:215)
    at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
    at io.ktor.server.engine.internal.CallableUtilsKt.callFunctionWithInjection(CallableUtils.kt:120)
    at io.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:36)
    at io.ktor.server.engine.EmbeddedServer$launchModuleByName$1.invoke(EmbeddedServerJvm.kt:349)
    at io.ktor.server.engine.EmbeddedServer$launchModuleByName$1.invoke(EmbeddedServerJvm.kt:348)
    at io.ktor.server.engine.EmbeddedServer.avoidingDoubleStartupFor(EmbeddedServerJvm.kt:373)
    at io.ktor.server.engine.EmbeddedServer.launchModuleByName(EmbeddedServerJvm.kt:348)
    at io.ktor.server.engine.EmbeddedServer.access$launchModuleByName(EmbeddedServerJvm.kt:27)
    at io.ktor.server.engine.EmbeddedServer$instantiateAndConfigureApplication$1.invoke(EmbeddedServerJvm.kt:329)
    at io.ktor.server.engine.EmbeddedServer$instantiateAndConfigureApplication$1.invoke(EmbeddedServerJvm.kt:327)
    at io.ktor.server.engine.EmbeddedServer.avoidingDoubleStartup(EmbeddedServerJvm.kt:355)
    at io.ktor.server.engine.EmbeddedServer.instantiateAndConfigureApplication(EmbeddedServerJvm.kt:327)
    at io.ktor.server.engine.EmbeddedServer.createApplication(EmbeddedServerJvm.kt:142)
    at io.ktor.server.engine.EmbeddedServer.start(EmbeddedServerJvm.kt:270)
    at io.ktor.server.cio.EngineMain.main(EngineMain.kt:25)
    at com.ApplicationKt.main(Application.kt:9)

Process finished with exit code 1


Solution

  • At the time of posting, Ktor 3 is not yet supported in Koin -

    https://github.com/InsertKoinIO/koin/issues/1716

    https://github.com/InsertKoinIO/koin/blob/main/projects/gradle/libs.versions.toml