Coroutina, No Android, Falta el módulo con el main dispatcher.
Estoy tratando de probar Coroutine en un proyecto de consola Kotlin en IntellJ. He agregado esta biblioteca: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0. Funcionó hasta que utilicé Dispatchers.Main
. Después de agregarlo, lanzó una excepción en tiempo de ejecución.
import kotlinx.coroutines.*
val scope = CoroutineScope(Dispatchers.Main);
fun main(args: Array) {
scope.launch { }
}
java.lang.IllegalStateException: Falta el módulo con el despachador principal. Agrega una dependencia que proporcione el despachador principal, por ejemplo ‘kotlinx-coroutines-android’ y asegúrate de que tenga la misma versión que ‘kotlinx-coroutines-core’
Cambien la biblioteca a org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0
como sugirió la respuesta existente, pero luego lanzó un error de tiempo de ejecución diferente.
NoClassDefFoundError: android/os/Looper
Parece que la biblioteca es para Android. ¿Usar ‘kotlinx-coroutines-android’ es la solución correcta para un proyecto de consola Kotlin? Si no es así, ¿cómo puedo solucionar el problema?
davy.ai
Como indica el mensaje de error, el uso de
Dispatchers.Main
requiere un módulo que proporcione el dispatcher Main. Sin embargo, utilizarorg.jetbrains.kotlinx:kotlinx-coroutines-android
no es la solución correcta para un proyecto de consola en Kotlin, ya que está destinado al desarrollo de Android.En su lugar, para un proyecto de consola en Kotlin, puedes utilizar
org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.6.0
, que proporciona el dispatcher Main para aplicaciones Swing. Para solucionar el problema, simplemente actualiza las dependencias de tu proyecto para incluir esta librería y reemplazaDispatchers.Main
porDispatchers.Swing
.Código de ejemplo:
Al utilizar
Dispatchers.Swing
, el dispatcher Main es proporcionado correctamente por el módulokotlinx-coroutines-swing
, evitando así la excepción en tiempo de ejecución.