Неразрешенная ссылка: запуск

Попытка запускать некоторые примеры для сопроводителей 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'

Ответ 1

Как уже было kotlinx.coroutines.experimental.* в комментариях, импорт отсутствует для kotlinx.coroutines.experimental.*. Вы можете посмотреть мои примеры в GitHub, если хотите.

import kotlinx.coroutines.experimental.*

fun main(args: Array<String>) {

    launch(CommonPool) {
        delay(1000)
        LOG.debug("Hello from coroutine")
    }

}

Ответ 2

Если вы используете сопрограммы 1. 0+, импорт больше не будет

импорт 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"

Ответ 3

Запуск больше не используется напрямую. Документация 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
    } 
}