Ktor 启动示例错误

Posted

技术标签:

【中文标题】Ktor 启动示例错误【英文标题】:Ktor startup example errors 【发布时间】:2018-03-03 23:07:37 【问题描述】:

我对 Kotlin 和 Ktor 和 Gradle 很陌生,想尝试 Ktor,所以按照here 解释的步骤完成了,最后得到了这个代码,以及屏幕截图中显示的结构:

看到有很多错误,如何解决?

package blog

import org.jetbrains.ktor.netty.*
import org.jetbrains.ktor.routing.*
import org.jetbrains.ktor.application.*
import org.jetbrains.ktor.host.*
import org.jetbrains.ktor.http.*
import org.jetbrains.ktor.response.*

fun main(args: Array<String>) 
    embeddedServer(Netty, 8080) 
        routing 
            get("/") 
                call.respondText("My Example Blog", ContentType.Text.html)
            
        
    .start(wait = true)

build.gradle 文件自动生成为:

group 'Example'
version '1.0-SNAPSHOT'

buildscript 
    ext.kotlin_version = '1.1.4-3'

    repositories 
        mavenCentral()
    
    dependencies 
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    


apply plugin: 'java'
apply plugin: 'kotlin'

sourceCompatibility = 1.8

repositories 
    mavenCentral()


dependencies 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'


compileKotlin 
    kotlinOptions.jvmTarget = "1.8"

compileTestKotlin 
    kotlinOptions.jvmTarget = "1.8"

【问题讨论】:

【参考方案1】:

您的 build.gradle 脚本不完整(缺少依赖项) - 请参阅 here 了解详细信息。这是一个很好的:

group 'Example'
version '1.0-SNAPSHOT'

buildscript 
    ext.kotlin_version = '1.1.4-3'

    repositories 
        mavenCentral()
    
    dependencies 
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    


apply plugin: 'java'
apply plugin: 'kotlin'

sourceCompatibility = 1.8
ext.ktor_version = '0.4.0'

repositories 
    mavenCentral()
    maven  url  "http://dl.bintray.com/kotlin/ktor" 
    maven  url "https://dl.bintray.com/kotlin/kotlinx" 


dependencies 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    compile "org.jetbrains.ktor:ktor-core:$ktor_version"
    compile "org.jetbrains.ktor:ktor-netty:$ktor_version"
    compile "ch.qos.logback:logback-classic:1.2.1"
    testCompile group: 'junit', name: 'junit', version: '4.12'


compileKotlin 
    kotlinOptions.jvmTarget = "1.8"

compileTestKotlin 
    kotlinOptions.jvmTarget = "1.8"

kotlin 
    experimental 
        coroutines "enable"
    

【讨论】:

我在运行应用程序时收到此错误:“SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。SLF4J:默认为无操作 (NOP) 记录器实现” @HasanAYousef,这不是错误而是警告。您还需要配置记录器。 谢谢@OPal,你能帮我完成我想做的第二步吗,在这个问题中:***.com/questions/46365605/…【参考方案2】:

我建议使用IntelliJ Ktor plugin 来引导您的应用程序。 ./gradlew run 脚本使用此配置开箱即用,您无需摆弄 Gradle 配置。这是最简单的入门方式。

这是一个使用配置的示例 Ktor 应用程序:https://gitlab.com/tinacious/ktor-example

如果您想从 IntelliJ 运行您的应用程序,请查看我使用的运行配置的答案:https://***.com/a/65350680/1870884

【讨论】:

唉,插件现在被标记为已过时。 (2021 年 4 月) 这是因为它现在与 IntelliJ 捆绑在一起。

以上是关于Ktor 启动示例错误的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式启动 ktor-server 以进行集成测试

在 ktor 请求处理程序中启动协程

通过 Docker 启动 Ktor 应用程序会导致:未配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL

Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?

Kotlin Ktor API

如何获取 ktor 服务的服务器 IP/端口?