Skip to content

JVM (Desktop) - Runtime error java.lang.NoSuchMethodError: 'android.os.Looper android.os.Handler.getLooper()' #54

Description

@mdyaseen14

In Kotlin multiplatform added GitLive Firebase Kotlin SDK as below,

In build.gradle.kts (:composeApp) - Kotlin sources commonMain dependency
implementation(libs.bundles.firebase.mp)

Gradle versions file
`git-live-firebase="2.1.0"

[libraries]
firebase-mp-common = { module = "dev.gitlive:firebase-common", version.ref = "git-live-firebase" }
firebase-mp-auth = { module = "dev.gitlive:firebase-auth", version.ref = "git-live-firebase" }
firebase-mp-database = { module = "dev.gitlive:firebase-database", version.ref = "git-live-firebase" }
firebase-mp-firestore = { module = "dev.gitlive:firebase-firestore", version.ref = "git-live-firebase" }
firebase-mp-storage = { module = "dev.gitlive:firebase-storage", version.ref = "git-live-firebase" }

[bundles]
firebase-mp = ["firebase-mp-common", "firebase-mp-auth", "firebase-mp-database", "firebase-mp-firestore", "firebase-mp-storage"]
`

Following error occurs even in blank application
`
Caused by: java.lang.NoSuchMethodError: 'android.os.Looper android.os.Handler.getLooper()'

at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:358)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:134)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:68)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at androidx.lifecycle.MainDispatcherChecker.updateMainDispatcherThread(MainDispatcherChecker.desktop.kt:28)
at androidx.lifecycle.MainDispatcherChecker.isMainDispatcherThread(MainDispatcherChecker.desktop.kt:56)
at androidx.lifecycle.LifecycleRegistry_desktopKt.isMainThread(LifecycleRegistry.desktop.kt:20)
at androidx.lifecycle.LifecycleRegistry.enforceMainThreadIfNeeded(LifecycleRegistry.jvm.kt:302)
at androidx.lifecycle.LifecycleRegistry.setCurrentState(LifecycleRegistry.jvm.kt:106)
at androidx.compose.ui.scene.ComposeContainer.updateLifecycleState(ComposeContainer.desktop.kt:463)
at androidx.compose.ui.scene.ComposeContainer.onWindowFocusChanged(ComposeContainer.desktop.kt:225)
at androidx.compose.ui.scene.ComposeContainer.setWindow(ComposeContainer.desktop.kt:317)
at androidx.compose.ui.scene.ComposeContainer.<init>(ComposeContainer.desktop.kt:185)
at androidx.compose.ui.scene.ComposeContainer.<init>(ComposeContainer.desktop.kt:84)
at androidx.compose.ui.awt.ComposeWindowPanel.<init>(ComposeWindowPanel.desktop.kt:52)
at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:66)
at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:64)
at androidx.compose.ui.window.Window_desktopKt$Window$3$1.invoke(Window.desktop.kt:183)
at androidx.compose.ui.window.Window_desktopKt$Window$3$1.invoke(Window.desktop.kt:181)
at androidx.compose.ui.window.Window_desktopKt$Window$13$1.invoke(Window.desktop.kt:605)
at androidx.compose.ui.window.Window_desktopKt$Window$13$1.invoke(Window.desktop.kt:604)
at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2$1.invoke(AwtWindow.desktop.kt:70)
at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2$1.invoke(AwtWindow.desktop.kt:69)
at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1364)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:992)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:1150)
at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:649)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:635)
at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:221)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith$$$capture(ContinuationImpl.kt:33)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at java.desktop/java.awt.event.InvocationEvent.dispatch$$$capture(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

`

In MainDispatcherChecker.desktop.kt file isMainDispatcherThread() called, isMainDispatcherAvailable is true if firebase added and fails.

If firebase dependency removed working ok. Kindly resolve.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions