Getting Startedを見てみる。 Getting Started · Kotlin/ktor Wiki · GitHub
importがない・・・。
https://github.com/Kotlin/ktor
公式でさえ
embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello, world!", ContentType.Text.Html) } } }.start(wait = true)
しかない。
一応これをsrc/main/kotlin/main.kt
にでも記載する。
fun main(args: Array<String>) { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello, world!", ContentType.Text.Html) } } } server.start(wait = true) }
build.gradle
これの記載は
buildscript { // ext.kotlin_version = '1.0.3' // ext.ktor_version = '0.3' ext.kotlin_version = '1.1.3' ext.ktor_version = '0.3.2' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin' apply plugin: 'application' repositories { mavenCentral() maven { url "https://dl.bintray.com/kotlin/kotlinx" } maven { url "https://dl.bintray.com/kotlin/ktor" } } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.ktor:ktor-core:$ktor_version" compile "org.jetbrains.ktor:ktor-locations:$ktor_version" //runtime "org.jetbrains.ktor:ktor-netty:$ktor_version" compile "org.jetbrains.ktor:ktor-netty:$ktor_version" // いらないかも?(https://mvnrepository.com/artifact/io.netty/netty-all/4.0.4.Final)をみた compile group: 'io.netty', name: 'netty-all', version: '4.0.4.Final' } sourceSets { main.kotlin.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/java' } // いらないかも? mainClassName = 'org.jetbrains.ktor.netty.DevelopmentHost'
インポートの記載
一旦ここを参考にした。 ohtomi.hatenablog.com
import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.netty.embeddedNettyServer // deprecatedなので不要 import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* // embeddedServer import org.jetbrains.ktor.response.* fun main(args: Array<String>) { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello, world!", ContentType.Text.Html) } } } server.start(wait = true) }
org.jetbrains.ktor.netty.embeddedNettyServer
をインポートするともうdeprecateで古いって言われる。
新しいembeddedServer
を使うためimport org.jetbrains.ktor.http.*
を使う。
この辺を見るとimportの参考になる ktor/EmbeddedApplication.kt at 8e14bfa6d032a5ab03fad724dde503d52e1aeccb · Kotlin/ktor · GitHub
他にもどのメソッドがどこにあるかわからないがこんな感じ? ↓
routing
・・・import org.jetbrains.ktor.routing.*
をする。
call
・・・・import org.jetbrains.ktor.response.*
をする。
Netty
・・・・こいつが曲者import org.jetbrains.ktor.netty.*
にある。
build.gradle
に
// ext.kotlin_version = '1.0.3' // ext.ktor_version = '0.3'
とコメントアウトしたのは1.0だとcall.respondText
が使えないとか言われるから。
build.gradle · master · Artur Bosch / TinboServer · GitLab
でも正しいバージョンとかわからないので↑を見て。
ext.kotlin_version = '1.1.3' ext.ktor_version = '0.3.2' // 上だと1だけど2でも行けたからそっちにした
にした。
Error:(13, 13) Kotlin: 'get(String, suspend PipelineContext<ApplicationCall>.(ApplicationCall) -> Unit): Route' is only available since Kotlin 1.1 and cannot be used in Kotlin 1.0
Error:(13, 13) Kotlin: The feature "coroutines" is only available since language version 1.1 (see: https://kotlinlang.org/docs/diagnostics/experimental-coroutines)
Error:(14, 22) Kotlin: 'respondText(String, ContentType): Unit' is only available since Kotlin 1.1 and cannot be used in Kotlin 1.0
があああ・・とまだいろいろエラーでる。
build.gradle
に書いたのは関係ない?
おそらくIDE自体の設定で、今回のプロジェクトに絞ったのではない設定だと思うが、
「command
+ ,
」での設定(またはバーのIntelliJ IDEA→Prefarences…)。
ここを1.0から1.1にする。
しかしこれではだめだった。
今回のプロジェクト設定もする。 (個別設定があるので先程の手順はいらないかもれない)
プロジェクト名のあるフォルダを右クリックしてここを選ぶ。(ショートカットは「command
+ ↓
」)
さらにここで自分のtest/test_mainを選んで1.1にする。
「Use project settings」にチェックでもいいと思う。先程の手順はいらないかもれないって言ったけどこの時なら役立つね。
これでやっと動いたーーーーーー。