Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

789
Visualizações
Coroutine, sin Android, falta el módulo con el despachador principal

Estoy tratando de probar Coroutine en el proyecto de consola Kotlin en IntellJ. He agregado esta biblioteca: org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.0. Funcionó, hasta que usé Dispatchers.Main . Después de agregarlo, lanzó una excepción de tiempo de ejecución.

 import kotlinx.coroutines.* val scope = CoroutineScope(Dispatchers.Main); fun main(args: Array<String>) { scope.launch { } }

java.lang.IllegalStateException: falta el módulo con el despachador principal. Agregue la dependencia que proporciona el despachador principal, por ejemplo, 'kotlinx-coroutines-android' y asegúrese de que tenga la misma versión que 'kotlinx-coroutines-core'

Cambié la biblioteca con org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0 como sugirió la respuesta existente, pero luego arrojó 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 el proyecto de consola Kotlin? Si no es así, ¿cómo soluciono el problema?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Dispatchers.Main está diseñado para aplicaciones GUI, no es compatible con el proyecto de consola. Según la Guía para la programación de UI con coroutines, kotlinx.coroutines tiene tres módulos que brindan contexto de coroutine para diferentes bibliotecas de aplicaciones de UI:

  • kotlinx-coroutines-android -- Dispatchers. Contexto principal para aplicaciones de Android.
  • kotlinx-coroutines-javafx : contexto Dispatchers.JavaFx para aplicaciones de interfaz de usuario JavaFX.
  • kotlinx-coroutines-swing -- Contexto de Dispatchers.Swing para aplicaciones de interfaz de usuario de Swing.

Use runBlocking para suspender la función main hasta que se ejecuten las rutinas:

 fun main(args: Array<String>) = runBlocking { ... }
over 4 years ago · Santiago Trujillo Relatório

0

Dispatchers.Main probablemente no sea lo que busca aquí. Está destinado a enviar corrutinas en el bucle de eventos principal en las aplicaciones GUI.

Para las aplicaciones de consola, y especialmente en el tipo de fragmento que está compartiendo aquí, probablemente desee usar el subproceso principal (en el que main() se ejecuta) como el bucle de eventos, y evitar que main() regrese hasta que las corrutinas estén hecho. Esto se hace usando runBlocking , que bloquea el subproceso actual para el código externo, pero lo usa como un bucle de eventos para el CoroutineScope pasado this a la lambda que pasa a runBlocking .

Por lo tanto, su código probablemente debería verse así:

 import kotlinx.coroutines.* fun main() { runBlocking { // this: CoroutineScope // there is a CoroutineScope here, the receiver is implicit launch { // this code will run in the main thread, // concurrently with other coroutines and other code // in the runBlocking lambda } // this code will run in the main thread, // concurrently with the launch and other coroutines } }
over 4 years ago · Santiago Trujillo Relatório

0

Importe kotlinx-coroutines-swing: (su versión de uso de kotlin) en su gradle de dependencias y compile el programa

implementación "org.jetbrains.kotlinx:kotlinx-coroutines-swing:$kotlin_coroutines_version"

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda