kotlin GlobalScope,runBlocking 在 kotlin.coroutines 中不可用。*
kotlin GlobalScope, runBlocking is not available in kotlin.coroutines.*
我在 github here.
中有多模块 kotlin gradle 项目
我的一个子项目 introducing-coroutines
带有构建文件 build.gradle.kts
文件是 here
build.gradle.kts
的内容是-
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
}
}
我正在尝试从这个 link 创建我的第一个协程程序。
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
}
问题是 GlobalScope
在 kotlin.coroutines.*
或 kotlinx.coroutines.*
中不可用。下面是截图-
gradle 版本 - 5.1.1
科特林版本 - 1.3.11
kotlinx-coroutines-core - 1.1.0
任何人都可以帮我导入包详细信息什么是包 GlobalScope
/ runBlocking
需要吗?
解决问题的最简单方法是更换
compile(kotlin ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"))
和
compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")
那么为什么需要删除 kotlin
功能呢?如果你检查它的源代码(如下),你会看到它将模块名称附加到字符串 "org.jetbrains.kotlin:kotlin-"
所以在你的情况下最终字符串变成 "org.jetbrains.kotlin:kotlin-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"
这显然是无效的并且应该导致错误(但它不会',所以这是一个错误)。
/**
* 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" } ?: ""}"
我在 github here.
中有多模块 kotlin gradle 项目我的一个子项目 introducing-coroutines
带有构建文件 build.gradle.kts
文件是 here
build.gradle.kts
的内容是-
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
}
}
我正在尝试从这个 link 创建我的第一个协程程序。
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
}
问题是 GlobalScope
在 kotlin.coroutines.*
或 kotlinx.coroutines.*
中不可用。下面是截图-
gradle 版本 - 5.1.1 科特林版本 - 1.3.11 kotlinx-coroutines-core - 1.1.0
任何人都可以帮我导入包详细信息什么是包 GlobalScope
/ runBlocking
需要吗?
解决问题的最简单方法是更换
compile(kotlin ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"))
和
compile("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0")
那么为什么需要删除 kotlin
功能呢?如果你检查它的源代码(如下),你会看到它将模块名称附加到字符串 "org.jetbrains.kotlin:kotlin-"
所以在你的情况下最终字符串变成 "org.jetbrains.kotlin:kotlin-org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0"
这显然是无效的并且应该导致错误(但它不会',所以这是一个错误)。
/**
* 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" } ?: ""}"