S.
11/10/2024, 4:45 PMException in thread "main" java.lang.NoClassDefFoundError: io/ktor/utils/io/ClosedWriteChannelException
at io.ktor.server.engine.BaseApplicationEngine.<init>(BaseApplicationEngine.kt:48)
S.
11/10/2024, 4:45 PMException in thread "main" java.lang.NoClassDefFoundError: io/ktor/utils/io/ClosedWriteChannelException
at io.ktor.server.engine.BaseApplicationEngine.<init>(BaseApplicationEngine.kt:48)
at io.ktor.server.engine.BaseApplicationEngine.<init>(BaseApplicationEngine.kt:31)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:33)
at io.ktor.server.netty.Netty.create(Embedded.kt:18)
at io.ktor.server.netty.Netty.create(Embedded.kt:13)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:111)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:100)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:65)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:40)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:32)
at se.fluen.graphql.ApplicationKt.main(Application.kt:9)
at se.fluen.graphql.ApplicationKt.main(Application.kt)
Caused by: java.lang.ClassNotFoundException: io.ktor.utils.io.ClosedWriteChannelException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
... 12 more
S.
11/10/2024, 4:47 PMfun main() {
embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module)
.start(wait = true)
}
fun Application.module() {
configureSecurity()
configureHTTP()
configureMonitoring()
configureGraphQL()
configureRouting()
configureRateLimit()
}
I have server-core and server-netty as dependencies as wellDaniel Pitts
11/10/2024, 4:53 PMS.
11/10/2024, 4:54 PMplugins {
application
kotlin("jvm")
alias(libs.plugins.ktor)
alias(libs.plugins.serialization)
alias(libs.plugins.graphql)
}
version = libs.versions.project.get()
application {
mainClass.set("se.fluen.graphql.ApplicationKt")
val isDevelopment: Boolean = project.ext.has("development")
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}
dependencies {
implementation(projects.core)
implementation(libs.ktor.core)
implementation(libs.ktor.contentNegotiation)
implementation(libs.ktor.cors)
implementation(libs.ktor.auth)
implementation(libs.ktor.jwt)
implementation(libs.ktor.logging)
implementation(libs.ktor.netty)
implementation(libs.ktor.client.cio)
implementation(libs.ktor.rateLimit)
implementation(libs.logback)
}
kotlin {
jvmToolchain(21)
sourceSets.main {
kotlin.srcDir("build/generated/ksp/main/kotlin")
languageSettings.optIn("kotlin.uuid.ExperimentalUuidApi")
}
}
Daniel Pitts
11/10/2024, 4:54 PMS.
11/10/2024, 4:55 PMktor-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" }
ktor-contentNegotiation = { module = "io.ktor:ktor-server-content-negotiation-jvm", version.ref = "ktor" }
ktor-serialization = { module = "io.ktor:ktor-serialization-kotlinx-json-jvm", version.ref = "ktor" }
ktor-cors = { module = "io.ktor:ktor-server-cors-jvm", version.ref = "ktor" }
ktor-auth = { module = "io.ktor:ktor-server-auth-jvm", version.ref = "ktor" }
ktor-jwt = { module = "io.ktor:ktor-server-auth-jwt-jvm", version.ref = "ktor" }
ktor-rateLimit = { module = "io.ktor:ktor-server-rate-limit", version.ref = "ktor" }
ktor-logging = { module = "io.ktor:ktor-server-call-logging-jvm", version.ref = "ktor" }
ktor-netty = { module = "io.ktor:ktor-server-netty-jvm", version.ref = "ktor" }
ktor-test = { module = "io.ktor:ktor-server-test-host", version.ref = "ktor" }
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor" }
ktor-client-auth = { module = "io.ktor:ktor-client-auth", version.ref = "ktor" }
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
that's the ktor stuff. version 2.3.12, kotlin 2.0.21Daniel Pitts
11/10/2024, 5:00 PMio.ktor:ktor-io:3.0.0
dependency, which is brought in from core. Look at output of gradle server:dependencies
(assuming server
is the name of your module.)S.
11/10/2024, 5:13 PMDaniel Pitts
11/10/2024, 5:13 PMS.
11/10/2024, 5:15 PMNoSuchMethodError
on startup due to a version mismatch. sadly expedia graphql is still on ktor 2.0