如何运行 ktor 应用程序?
Posted
技术标签:
【中文标题】如何运行 ktor 应用程序?【英文标题】:How to run ktor application? 【发布时间】:2020-05-30 16:50:05 【问题描述】:我已经使用 Gradle 创建了一个 Ktor 应用程序,并按照 https://ktor.io/quickstart/quickstart/gradle.html#initial 上的教程进行操作。 最后说:
然后去 Run -> Edit Configurations 选择 blog.BlogAppKt 配置并将其 Main 类更改为: io.ktor.server.netty.EngineMain
现在,当我们运行新配置时,应用程序将启动 再次。
我正在搜索该选项,但找不到:
gradle 文件如下所示:
plugins
application
kotlin("jvm") version "1.3.61"
group = "org.example"
version = "1.0-SNAPSHOT"
val ktor_version = "1.3.0"
repositories
mavenCentral()
jcenter()
dependencies
implementation(kotlin("stdlib-jdk8"))
compile("io.ktor:ktor-server-netty:$ktor_version")
compile("io.ktor:ktor-server-core:$ktor_version")
compile("ch.qos.logback:logback-classic:1.2.3")
testCompile(group = "junit", name = "junit", version = "4.12")
tasks
compileKotlin
kotlinOptions.jvmTarget = "1.8"
compileTestKotlin
kotlinOptions.jvmTarget = "1.8"
application
mainClassName = "io.ktor.server.netty.EngineMain"
更新
我尝试了以下配置:
但你可以,有一个错误消息。
我必须添加什么才能运行 Ktor 应用程序?
【问题讨论】:
你安装了 Kotlin 和 Gradle 插件吗? 是的。两者都已安装。 您使用的是哪个 JDK 版本?我可以用 OpenJDK 13 重现您的问题,但不能用 OpenJDK 8 重现您的问题。我认为您应该关注这个问题:github.com/ktorio/ktor/issues/321 【参考方案1】:您可以手动运行 Main 函数,之后它将变为可用
【讨论】:
【参考方案2】:如果不存在,请使用加号按钮创建一个新的。
可以选择kotlin,然后填写主类等
【讨论】:
上面写着10:22 Error running 'Run': Class 'io.ktor.server.netty.EngineMain' not found in module 'webservice'
。【参考方案3】:
您需要从模板应用程序创建新的运行配置,而不是从 Kotlin 模板。 (然后填写Main class
和Use classpath of module
字段)
来源: https://ktor.io/servers/engine.html#running-the-application-from-inside-the-ide
【讨论】:
【参考方案4】:如果您在 intellij 上安装 Ktor 插件,可能会更容易。这是我开始 Ktor 项目时通常做的第一件事。
【讨论】:
【参考方案5】:相信你遇到过a known bug。见 cmets starting here。
当您使用 JDK 9 或更高版本时,如果您运行该配置,您将看到此堆栈跟踪:
java.lang.module.ResolutionException: Modules ktor.http.jvm and ktor.server.core export package io.ktor.http to module ktor.http.cio.jvm
at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:885)
at java.base/java.lang.module.Resolver.failTwoSuppliers(Resolver.java:797)
at java.base/java.lang.module.Resolver.checkExportSuppliers(Resolver.java:718)
at java.base/java.lang.module.Resolver.finish(Resolver.java:362)
at java.base/java.lang.module.Configuration.<init>(Configuration.java:141)
at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:316)
at java.base/java.lang.module.ModuleDescriptor$1.resolveAndBind(ModuleDescriptor.java:2693)
at java.base/jdk.internal.module.ModuleBootstrap.boot(ModuleBootstrap.java:361)
at java.base/java.lang.ClassLoader.initializeClassLoaders(ClassLoader.java:210)
at java.base/java.lang.Thread.initialize(Thread.java:428)
at java.base/java.lang.Thread.<init>(Thread.java:153)
如果您切换到 JDK 8,那么您可能会在运行配置对话框中看到错误,但应用程序会运行。
【讨论】:
【参考方案6】:Gradle 构建失败。在 ide settings>Build, Execution, Deployment>Build Tools>Gradle::Gradle JVM 中选择不同的 JVM(如果需要,请下载)。 (尝试 JDK-14 或 15)
【讨论】:
以上是关于如何运行 ktor 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
Ktor 应用程序未在使用 IntelliJ IDEA 的 Kotlin 多平台项目中运行
在 App Engine 上运行 Kotlin Ktor 应用程序时出错