【问题标题】:How to run ktor application?如何运行 ktor 应用程序?
【发布时间】: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

标签: gradle kotlin ktor


【解决方案1】:

您可以手动运行 Main 函数,之后它将变为可用

【讨论】:

    【解决方案2】:

    如果不存在,请使用加号按钮创建一个新的。

    可以选择kotlin,然后填写主类等

    【讨论】:

    • 上面写着10:22 Error running 'Run': Class 'io.ktor.server.netty.EngineMain' not found in module 'webservice'
    【解决方案3】:

    您需要从模板应用程序创建新的运行配置,而不是从 Kotlin 模板。 (然后填写Main classUse 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)

          【讨论】:

            猜你喜欢
            • 2018-08-02
            • 1970-01-01
            • 2020-09-26
            • 2020-05-17
            • 1970-01-01
            • 2023-03-06
            • 2018-02-21
            • 2018-07-16
            • 2015-08-21
            相关资源
            最近更新 更多