Примеры ошибок при запуске Ktor

Я новичок в Kotlin, Ktor и Gradle, хотел попробовать Ktor, поэтому выполнил описанные шаги здесь, и в итоге мы получили этот код и структуру, показанную на снимке экрана:

Как видите, ошибок много, как их исправить?

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"
}

введите здесь описание изображения


person Hasan A Yousef    schedule 22.09.2017    source источник


Ответы (2)


У вас неполный 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
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"
    }
}
person Opal    schedule 22.09.2017
comment
Я получил эту ошибку при запуске приложения: SLF4J: Не удалось загрузить класс org.slf4j.impl.StaticLoggerBinder. SLF4J: По умолчанию реализация регистратора без операции (NOP) - person Hasan A Yousef; 22.09.2017
comment
@HasanAYousef, это скорее не ошибка, а предупреждение. Вам также необходимо настроить регистратор. - person Opal; 22.09.2017
comment
Спасибо @OPal, можете ли вы помочь мне со вторым шагом, который я хочу сделать, в этом вопросе: stackoverflow.com/questions/46365605/ - person Hasan A Yousef; 22.09.2017

Я бы рекомендовал использовать плагин IntelliJ Ktor для начальной загрузки вашего приложения. Сценарий ./gradlew run запускается прямо из коробки с этой конфигурацией, и вам не нужно возиться с конфигурацией Gradle. Это самый простой способ начать.

Вот пример приложения Ktor, в котором используется конфигурация: https://gitlab.com/tinacious/ktor-example

Если вы хотите запустить приложение из IntelliJ, ознакомьтесь с этим ответом для используемой мной конфигурации запуска: https://stackoverflow.com/a/65350680/1870884

person Tina    schedule 18.12.2020
comment
Увы, плагин теперь помечен как Устаревший. (Апрель 2021 г.) - person Martin Marconcini; 08.04.2021