Kotlinコルーチンのいくつかの例を実行しようとしていますが、プロジェクトをビルドできません。最新のGradleリリースを使用しています-4.1
チェック/修正すべき提案はありますか?
こちらがbuild.gradle
です
buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
kotlin {
repositories {
jcenter()
}
experimental {
coroutines 'enable'
}
dependencies {
compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.18"
}
}
とmain.kt
fun main(args: Array<String>) {
launch (CommonPool) {
delay(1000L)
println("World!")
}
println("Hello, ")
Thread.sleep(2000L)
}
gradle compileKotlin
を実行すると、次のようになります
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (2, 5): Unresolved reference: launch
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (2, 13): Unresolved reference: CommonPool
e: /Users/philippgrigoryev/projects/kotlin-coroutines/src/main/kotlin/main.kt: (3, 9): Unresolved reference: delay`
コメントですでに回答されているように、kotlinx.coroutines.experimental.*
パッケージのインポートがありません。必要に応じて GitHub で私の例を確認できます。
import kotlinx.coroutines.experimental.*
fun main(args: Array<String>) {
launch(CommonPool) {
delay(1000)
LOG.debug("Hello from coroutine")
}
}
Launchは直接使用されなくなりました。 Kotlinのドキュメント は以下の使用を提案しています:
fun main() {
GlobalScope.launch { // launch a new coroutine in background and continue
delay(1000L)
println("World!")
}
println("Hello,") // main thread continues here immediately
runBlocking { // but this expression blocks the main thread
delay(2000L) // ... while we delay for 2 seconds to keep JVM alive
}
}
コルーチン1.0以降を使用している場合、インポートは
import kotlinx.coroutines.experimental。*
だが
インポートkotlinx.coroutines.launch
Build.gradleの依存関係クロージャーで次のものが必要になります(Coroutines 1.0.1の場合):
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.1'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-Android:1.0.1"
この方法を試してください、
//この行をgradleに追加します
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.kotlinx_coroutines"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-Android:$rootProject.kotlinx_coroutines"
class xyz{
private val job = Job()
private val coroutinesScope: CoroutineScope = CoroutineScope(job + Dispatchers.IO)
....
. ...
coroutinesScope.launch {
// task to do
Timber.d("Delete Firebase Instance ID")
}
// clear the job
job.cancel()
}