Tengo un proyecto kotlin gradle de varios módulos en github aquí .
Uno de mis subproyectos introducing-coroutines con el archivo de compilación build.gradle.kts está aquí
El contenido de build.gradle.kts es:
import org.jetbrains.kotlin.gradle.dsl.Coroutines import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { java kotlin("jvm") version "1.3.11" } group = "chapter2" version = "1.0-SNAPSHOT" repositories { mavenCentral() } dependencies { compile(kotlin("stdlib-jdk8")) compile(kotlin ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")) testCompile("junit", "junit", "4.12") } configure<JavaPluginConvention> { sourceCompatibility = JavaVersion.VERSION_1_8 } tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" } kotlin { experimental { coroutines = Coroutines.ENABLE } }Estoy tratando de crear mi primer programa coroutine desde este enlace .
import kotlinx.coroutines.* fun main() { GlobalScope.launch { // launch new coroutine in background and continue delay(1000L) // non-blocking delay for 1 second (default time unit is ms) println("World!") // print after delay } println("Hello,") // main thread continues while coroutine is delayed Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive } El problema es que GlobalScope no está disponible en kotlin.coroutines.* o kotlinx.coroutines.* . A continuación se muestra la captura de pantalla:
versión gradle - 5.1.1 versión kotlin - 1.3.11 kotlinx-coroutines-core - 1.1.0
¿Alguien puede ayudarme con los detalles de importación del paquete? ¿Qué es el paquete GlobalScope / runBlocking requerido?
La forma más sencilla de resolver su problema es reemplazar
compile(kotlin ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"))
con
compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")
Entonces, ¿por qué necesitas eliminar la función kotlin ? Si revisa su código fuente (a continuación), verá que agrega el nombre del módulo a la cadena "org.jetbrains.kotlin:kotlin-" , por lo que en su caso, la cadena final se convierte en "org.jetbrains.kotlin:kotlin-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0" que obviamente no es válido y debería causar un error (pero no lo hace, por lo que es un error).
/** * Builds the dependency notation for the named Kotlin [module] at the given [version]. * * @param module simple name of the Kotlin module, for example "reflect". * @param version optional desired version, unspecified if null. */ fun DependencyHandler.kotlin(module: String, version: String? = null): Any = "org.jetbrains.kotlin:kotlin-$module${version?.let { ":$version" } ?: ""}"