【发布时间】:2022-01-01 12:13:32
【问题描述】:
我正在尝试在 IntellJ 的 Kotlin 控制台项目中测试协程。我添加了这个库:org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0。它起作用了,直到我使用了Dispatchers.Main。添加后,它抛出了运行时异常。
import kotlinx.coroutines.*
val scope = CoroutineScope(Dispatchers.Main);
fun main(args: Array<String>) {
scope.launch { }
}
java.lang.IllegalStateException:缺少主调度程序的模块。添加提供主要调度程序的依赖项,例如'kotlinx-coroutines-android' 并确保它与 'kotlinx-coroutines-core' 具有相同的版本
按照现有答案的建议,我用org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0 切换了库,但随后它引发了不同的运行时错误。
NoClassDefFoundError: android/os/Looper
该库似乎适用于 Android。使用 'kotlinx-coroutines-android' 是 Kotlin 控制台项目的正确解决方案吗?如果不是,我该如何解决这个问题?
【问题讨论】:
-
很明显,你不能在非android目标上使用android版本。正如文档所说:“kotlinx.coroutines 的核心模块也可用于 Kotlin/JS 和 Kotlin/Native。”在您的情况下,您可能需要各种原生 - 似乎支持所有流行的类似 Posix 的目标。
-
或者可能是普通的 JVM:mvnrepository.com/artifact/org.jetbrains.kotlinx/…
-
也许这会回答你的问题? stackoverflow.com/a/54194735/1731626
-
@oakad 我说我在切换到安卓版本之前使用的是
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0。你链接的那个和我用的一样,不是吗?上面的代码是否在 IntellJ 的 Kotlin 控制台项目中使用该库运行时没有运行时错误? -
@Sergey 链接的答案提到了三件事:android、javafx 和 swing。这些似乎都是GUI的东西。我正在使用 Kotlin 控制台项目。你知道,一个只有
println("hello world")的项目。这是否意味着它必须是一个 GUI 项目才能使用 Dispatchers.Main?答案还提到了“...-core”,但那是我正在使用的东西,它导致了上面的运行时错误。