我正在尝试构建我的 Ktor 应用程序使用官方插件,但是一旦我运行构建的 fat JAR,我在请求我的应用程序时会收到以下错误:
$ ./gradlew runFatJar
...
INFO Application - Responding at http://0.0.0.0:8080
WARN o.eclipse.jetty.io.ManagedSelector - java.lang.ExceptionInInitializerError
WARN o.eclipse.jetty.io.ManagedSelector - java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jetty.server.HttpConnection
胖 JAR 似乎缺少 Jetty 类。
Ktor 插件基于 Shadow,您必须调用
mergeServiceFiles()
以确保所有必需的类都添加到 JAR 中:
tasks {
named<ShadowJar>("shadowJar") {
mergeServiceFiles()
}
}