MohamedRejeb / Calf

Calf is a library that allows you to easily create adaptive UIs and access platform specific APIs with Compose Multiplatform (Adaptive UI, File Picker, WebView, Permissions...).
https://mohamedrejeb.github.io/Calf/
Apache License 2.0
865 stars 37 forks source link

Problem with JavaFX #47

Closed Shahriyar13 closed 2 months ago

Shahriyar13 commented 9 months ago

I ran it by macosX64 as a JVM desktop app

When I add calf-ui package, I got the following error:

Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found

Dec 08, 2023 10:12:18 AM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @82702de'
Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
    at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:253)
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:268)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
    at javafx.application.Platform.startup(Platform.java:113)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at kotlinx.coroutines.javafx.PlatformInitializer.<clinit>(JavaFxDispatcher.kt:132)
    at kotlinx.coroutines.javafx.JavaFxDispatcherKt.initPlatform(JavaFxDispatcher.kt:115)
    at kotlinx.coroutines.javafx.JavaFx.<clinit>(JavaFxDispatcher.kt:77)
    at kotlinx.coroutines.javafx.JavaFxDispatcherFactory.createDispatcher(JavaFxDispatcher.kt:56)
    at kotlinx.coroutines.internal.MainDispatchersKt.tryCreateDispatcher(MainDispatchers.kt:57)
    at kotlinx.coroutines.internal.MainDispatcherLoader.loadMainDispatcher(MainDispatchers.kt:38)
    at kotlinx.coroutines.internal.MainDispatcherLoader.<clinit>(MainDispatchers.kt:22)
    at kotlinx.coroutines.Dispatchers.getMain(Dispatchers.kt:24)
    at app.duss.easyproject.core.utils.AppDispatchersKt$appDispatchers$1.<init>(AppDispatchers.kt:7)
    at app.duss.easyproject.core.utils.AppDispatchersKt.<clinit>(AppDispatchers.kt:6)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.<init>(MainStoreFactory.kt:38)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at com.arkivanov.mvikotlin.main.store.DefaultStoreFactory.create(DefaultStoreFactory.kt:26)
    at com.arkivanov.mvikotlin.core.store.StoreFactory$DefaultImpls.create$default(StoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1.<init>(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory.create(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:66)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:63)
    at com.arkivanov.mvikotlin.core.instancekeeper.InstanceKeeperExtKt.getStore(InstanceKeeperExt.kt:9)
    at app.duss.easyproject.presentation.ui.root.RootComponent.<init>(RootComponent.kt:144)
    at MainKt$main$rootComponent$1.invoke(Main.kt:32)
    at MainKt$main$rootComponent$1.invoke(Main.kt:17)
    at MainKt.invokeOnAwtSync$lambda$0(Main.kt:56)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
    at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize
    at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.missing(MainDispatchers.kt:115)
    at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.isDispatchNeeded(MainDispatchers.kt:96)
    at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:319)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
    at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
    at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
    at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.getLoggedInUser(MainStoreFactory.kt:54)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.executeAction(MainStoreFactory.kt:40)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.executeAction(MainStoreFactory.kt:37)
    at com.arkivanov.mvikotlin.extensions.coroutines.CoroutineExecutor.executeAction(CoroutineExecutor.kt:54)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$3.invoke(DefaultStore.kt:65)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$3.invoke(DefaultStore.kt:61)
    at com.arkivanov.mvikotlin.core.store.SimpleBootstrapper.invoke(SimpleBootstrapper.kt:28)
    at com.arkivanov.mvikotlin.main.store.DefaultStore.init(DefaultStore.kt:69)
    at com.arkivanov.mvikotlin.main.store.DefaultStoreFactory.create(DefaultStoreFactory.kt:30)
    at com.arkivanov.mvikotlin.core.store.StoreFactory$DefaultImpls.create$default(StoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1.<init>(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory.create(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:66)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:63)
    at com.arkivanov.mvikotlin.core.instancekeeper.InstanceKeeperExtKt.getStore(InstanceKeeperExt.kt:9)
    at app.duss.easyproject.presentation.ui.root.RootComponent.<init>(RootComponent.kt:144)
    at MainKt$main$rootComponent$1.invoke(Main.kt:32)
    at MainKt$main$rootComponent$1.invoke(Main.kt:17)
    at MainKt.invokeOnAwtSync$lambda$0(Main.kt:56)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(1), "coroutine#1":StandaloneCoroutine{Cancelling}@630c7a4e, Dispatchers.Main[missing, cause=java.lang.ExceptionInInitializerError]]
Caused by: java.lang.ExceptionInInitializerError
    at kotlinx.coroutines.javafx.JavaFxDispatcherKt.initPlatform(JavaFxDispatcher.kt:115)
    at kotlinx.coroutines.javafx.JavaFx.<clinit>(JavaFxDispatcher.kt:77)
    at kotlinx.coroutines.javafx.JavaFxDispatcherFactory.createDispatcher(JavaFxDispatcher.kt:56)
    at kotlinx.coroutines.internal.MainDispatchersKt.tryCreateDispatcher(MainDispatchers.kt:57)
    at kotlinx.coroutines.internal.MainDispatcherLoader.loadMainDispatcher(MainDispatchers.kt:38)
    at kotlinx.coroutines.internal.MainDispatcherLoader.<clinit>(MainDispatchers.kt:22)
    at kotlinx.coroutines.Dispatchers.getMain(Dispatchers.kt:24)
    at app.duss.easyproject.core.utils.AppDispatchersKt$appDispatchers$1.<init>(AppDispatchers.kt:7)
    at app.duss.easyproject.core.utils.AppDispatchersKt.<clinit>(AppDispatchers.kt:6)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.<init>(MainStoreFactory.kt:38)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at com.arkivanov.mvikotlin.main.store.DefaultStoreFactory.create(DefaultStoreFactory.kt:26)
    ... 23 more
Caused by: java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:280)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
    at javafx.application.Platform.startup(Platform.java:113)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at kotlinx.coroutines.javafx.PlatformInitializer.<clinit>(JavaFxDispatcher.kt:132)
    ... 36 more
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1371)
    at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1346)
    at java.desktop/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
    at MainKt.invokeOnAwtSync(Main.kt:56)
    at MainKt.main(Main.kt:17)
    at MainKt.main(Main.kt)
Caused by: java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize
    at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.missing(MainDispatchers.kt:115)
    at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.isDispatchNeeded(MainDispatchers.kt:96)
    at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:319)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
    at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
    at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
    at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.getLoggedInUser(MainStoreFactory.kt:54)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.executeAction(MainStoreFactory.kt:40)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.executeAction(MainStoreFactory.kt:37)
    at com.arkivanov.mvikotlin.extensions.coroutines.CoroutineExecutor.executeAction(CoroutineExecutor.kt:54)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$3.invoke(DefaultStore.kt:65)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$3.invoke(DefaultStore.kt:61)
    at com.arkivanov.mvikotlin.core.store.SimpleBootstrapper.invoke(SimpleBootstrapper.kt:28)
    at com.arkivanov.mvikotlin.main.store.DefaultStore.init(DefaultStore.kt:69)
    at com.arkivanov.mvikotlin.main.store.DefaultStoreFactory.create(DefaultStoreFactory.kt:30)
    at com.arkivanov.mvikotlin.core.store.StoreFactory$DefaultImpls.create$default(StoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1.<init>(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory.create(MainStoreFactory.kt:23)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:66)
    at app.duss.easyproject.presentation.ui.root.RootComponent$rootStore$1.invoke(RootComponent.kt:63)
    at com.arkivanov.mvikotlin.core.instancekeeper.InstanceKeeperExtKt.getStore(InstanceKeeperExt.kt:9)
    at app.duss.easyproject.presentation.ui.root.RootComponent.<init>(RootComponent.kt:144)
    at MainKt$main$rootComponent$1.invoke(Main.kt:32)
    at MainKt$main$rootComponent$1.invoke(Main.kt:17)
    at MainKt.invokeOnAwtSync$lambda$0(Main.kt:56)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(1), "coroutine#1":StandaloneCoroutine{Cancelled}@630c7a4e, Dispatchers.Main[missing, cause=java.lang.ExceptionInInitializerError]]
Caused by: java.lang.ExceptionInInitializerError
    at kotlinx.coroutines.javafx.JavaFxDispatcherKt.initPlatform(JavaFxDispatcher.kt:115)
    at kotlinx.coroutines.javafx.JavaFx.<clinit>(JavaFxDispatcher.kt:77)
    at kotlinx.coroutines.javafx.JavaFxDispatcherFactory.createDispatcher(JavaFxDispatcher.kt:56)
    at kotlinx.coroutines.internal.MainDispatchersKt.tryCreateDispatcher(MainDispatchers.kt:57)
    at kotlinx.coroutines.internal.MainDispatcherLoader.loadMainDispatcher(MainDispatchers.kt:38)
    at kotlinx.coroutines.internal.MainDispatcherLoader.<clinit>(MainDispatchers.kt:22)
    at kotlinx.coroutines.Dispatchers.getMain(Dispatchers.kt:24)
    at app.duss.easyproject.core.utils.AppDispatchersKt$appDispatchers$1.<init>(AppDispatchers.kt:7)
    at app.duss.easyproject.core.utils.AppDispatchersKt.<clinit>(AppDispatchers.kt:6)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.<init>(MainStoreFactory.kt:38)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$create$1$1.invoke(MainStoreFactory.kt:27)
    at com.arkivanov.mvikotlin.main.store.DefaultStoreFactory.create(DefaultStoreFactory.kt:26)
    ... 23 more
Caused by: java.lang.RuntimeException: No toolkit found
    at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:280)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
    at javafx.application.Platform.startup(Platform.java:113)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at kotlinx.coroutines.javafx.PlatformInitializer.<clinit>(JavaFxDispatcher.kt:132)
    ... 36 more

> Task :desktop:run FAILED

And Also I tried to add javaFX deps too:


import org.gradle.internal.os.OperatingSystem
alias(libs.plugins.openjfxJavaFx)
...
val os: OperatingSystem = OperatingSystem.current()
val arch: String = System.getProperty("os.arch")
val isAarch64: Boolean = arch.contains("aarch64")

val platform = when {
    os.isWindows -> "win"
    os.isMacOsX -> "mac"
    else -> "linux"
} + if (isAarch64) "-aarch64" else ""

 ... desktopMain by getting {
            dependencies {
                implementation("org.openjfx:javafx-base:21.0.1:$platform")
                implementation("org.openjfx:javafx-graphics:21.0.1:$platform")
                implementation("org.openjfx:javafx-controls:21.0.1:$platform")
                implementation("org.openjfx:javafx-media:21.0.1:$platform")
                implementation("org.openjfx:javafx-web:21.0.1:$platform")
                implementation("org.openjfx:javafx-swing:21.0.1:$platform")
                // Coroutines
                implementation(libs.kotlinx.coroutines.javafx)
...

but after that, I got into trouble with main dispatcher:

Dec 08, 2023 10:19:06 AM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @4d9234c1'
Exception in thread "JavaFX Application Thread @coroutine#1" java.lang.IllegalArgumentException: Not on Main thread, current thread is: Thread[#24,JavaFX Application Thread @coroutine#1,5,system]
    at com.arkivanov.mvikotlin.utils.internal.MainThreadAssertKt.assertOnMainThread(MainThreadAssert.kt:12)
    at com.arkivanov.mvikotlin.core.utils.MainThreadAssertKt.assertOnMainThread(MainThreadAssert.kt:13)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$2.onMessage(DefaultStore.kt:44)
    at com.arkivanov.mvikotlin.extensions.coroutines.CoroutineExecutor.dispatch(CoroutineExecutor.kt:80)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl.access$dispatch(MainStoreFactory.kt:37)
    at app.duss.easyproject.presentation.ui.main.store.MainStoreFactory$ExecutorImpl$getLoggedInUser$1.invokeSuspend(MainStoreFactory.kt:55)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(1), "coroutine#1":StandaloneCoroutine{Cancelling}@22501f60, Dispatchers.Main]
Exception in thread "JavaFX Application Thread @coroutine#2" java.lang.IllegalArgumentException: Not on Main thread, current thread is: Thread[#24,JavaFX Application Thread @coroutine#2,5,system]
    at com.arkivanov.mvikotlin.utils.internal.MainThreadAssertKt.assertOnMainThread(MainThreadAssert.kt:12)
    at com.arkivanov.mvikotlin.core.utils.MainThreadAssertKt.assertOnMainThread(MainThreadAssert.kt:13)
    at com.arkivanov.mvikotlin.main.store.DefaultStore$init$2.onMessage(DefaultStore.kt:44)
    at com.arkivanov.mvikotlin.extensions.coroutines.CoroutineExecutor.dispatch(CoroutineExecutor.kt:80)
    at app.duss.easyproject.presentation.ui.landing.store.LandingStoreFactory$ExecutorImpl.access$dispatch(LandingStoreFactory.kt:38)
    at app.duss.easyproject.presentation.ui.landing.store.LandingStoreFactory$ExecutorImpl$getLoggedInUser$1.invokeSuspend(LandingStoreFactory.kt:62)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [CoroutineId(2), "coroutine#2":StandaloneCoroutine{Cancelling}@52ad9a69, Dispatchers.Main]