Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception in thread "main" java.lang.NoSuchMethodError: 'void androidx.compose.ui.graphics.SkiaBackedCanvas_skikoKt.setAlphaMultiplier(androidx.compose.ui.graphics.Canvas, float)' #5050

Open
maxrave-dev opened this issue Jun 30, 2024 · 1 comment
Labels
bug Something isn't working wait for reply Further information is requested

Comments

@maxrave-dev
Copy link

Describe the bug
When I try to build and run Compose Desktop App in my Ubuntu 23.10, I have an error
image

But when I run in Android Target, it runs normally.

Affected platforms

  • Desktop (Windows, Linux, macOS)

Versions

  • Libraries:
    • Compose Multiplatform version: 1.6.10
    • Navigation Multiplatform version: 2.7.0-alpha07
    • ...
  • Kotlin version: 2.0.0
  • OS version(s) : Ubuntu 23.10
  • OS architecture (x86 or arm64): x86_64
  • JDK (for desktop issues): JetBrains Runtime 17.0.10

To Reproduce
Steps to reproduce the behavior:

  1. Run this code snippet:
           @Composable
         fun MainScreen() {
             val navController = rememberNavController()
             Scaffold(
                 bottomBar = {
                     BottomNavigationBar(navController)
                 }
             ) {
                 BottomNavGraph(
                     navController = navController
                 )
             }
         }
         //In App.kt
         @Composable
         @Preview
         fun App() {
             MaterialTheme {
                 MainScreen()
             }
         }
  2. Run ./gradlew run

Expected behavior
Should not crash and show navigation bar like Android Target

Screenshots
image

Additional context
Crash log:

 Task :composeApp:run

(java:33049): Gtk-WARNING **: 14:15:46.931: Theme directory 16x16/panel of theme Mkos-Big-Sur-Night has no size field


(java:33049): Gtk-WARNING **: 14:15:46.936: Theme directory 16x16@2x/places of theme Mkos-Big-Sur-Night has no size field


(java:33049): Gtk-WARNING **: 14:15:46.942: Theme directory 24x24/apps of theme Mkos-Big-Sur-Night has no size field


(java:33049): Gtk-WARNING **: 14:15:46.945: Theme directory 24x24@2x/panel of theme Mkos-Big-Sur-Night has no size field


(java:33049): Gtk-WARNING **: 14:15:46.946: Theme directory 24x24@2x/panel of theme Mkos-Big-Sur-Night has no size field

Exception in thread "main" java.lang.NoSuchMethodError: 'void androidx.compose.ui.graphics.SkiaBackedCanvas_skikoKt.setAlphaMultiplier(androidx.compose.ui.graphics.Canvas, float)'
	at androidx.compose.ui.platform.RenderNodeLayer.performDrawLayer(RenderNodeLayer.skiko.kt:295)
	at androidx.compose.ui.platform.RenderNodeLayer.drawLayer(RenderNodeLayer.skiko.kt:244)
	at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:348)
	at androidx.compose.ui.node.LayoutNode.draw$ui(LayoutNode.kt:926)
	at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:174)
	at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:361)
	at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:353)
	at androidx.compose.ui.node.LayoutNode.draw$ui(LayoutNode.kt:926)
	at androidx.compose.ui.node.RootNodeOwner.draw(RootNodeOwner.skiko.kt:197)
	at androidx.compose.ui.scene.MultiLayerComposeSceneImpl.draw(MultiLayerComposeScene.skiko.kt:257)
	at androidx.compose.ui.scene.BaseComposeScene.render(BaseComposeScene.skiko.kt:171)
	at androidx.compose.ui.scene.ComposeSceneMediator.onRender(ComposeSceneMediator.desktop.kt:537)
	at org.jetbrains.skiko.SkiaLayer.update$skiko(SkiaLayer.awt.kt:485)
	at org.jetbrains.skiko.redrawer.AWTRedrawer.update(AWTRedrawer.kt:54)
	at org.jetbrains.skiko.redrawer.LinuxOpenGLRedrawer.redrawImmediately(LinuxOpenGLRedrawer.kt:83)
	at org.jetbrains.skiko.SkiaLayer.paint(SkiaLayer.awt.kt:325)
	at androidx.compose.ui.scene.skia.WindowSkiaLayerComponent$contentComponent$1.paint(WindowSkiaLayerComponent.desktop.kt:54)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
	at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
	at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
	at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
	at androidx.compose.ui.window.Window_desktopKt$Window$12$1.invoke(Window.desktop.kt:434)
	at androidx.compose.ui.window.Window_desktopKt$Window$12$1.invoke(Window.desktop.kt:419)
	at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke(AwtWindow.desktop.kt:78)
	at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$3.invoke(AwtWindow.desktop.kt:76)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1.invoke(UpdateEffect.desktop.kt:59)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2$performUpdate$1.invoke(UpdateEffect.desktop.kt:55)
	at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2304)
	at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:504)
	at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:260)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke$performUpdate(UpdateEffect.desktop.kt:55)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke(UpdateEffect.desktop.kt:64)
	at androidx.compose.ui.util.UpdateEffect_desktopKt$UpdateEffect$2.invoke(UpdateEffect.desktop.kt:47)
	at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
	at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1295)
	at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:984)
	at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1005)
	at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:1099)
	at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:633)
	at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:619)
	at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:221)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:102)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
@maxrave-dev maxrave-dev added bug Something isn't working submitted labels Jun 30, 2024
@igordmn
Copy link
Collaborator

igordmn commented Jul 4, 2024

It works on a simple project with:

Compose Multiplatform version: 1.6.10
Navigation Multiplatform version: 2.7.0-alpha07
Kotlin version: 2.0.0

Code:

import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController

@Composable
fun App() {
    MaterialTheme {
        val navController = rememberNavController()
        Scaffold(
            bottomBar = {
                Row {
                    Button({
                        navController.navigate("Home")
                    }) {}
                    Button({
                        navController.navigate("Settings")
                    }) {}
                }
            }
        ) {
            NavHost(
                navController = navController,
                startDestination = BottomBarScreen.Home.route
            ) {
                composable(route = BottomBarScreen.Home.route) {
                    DisposableEffect(Unit) {
                        println("Home")
                        onDispose {  }
                    }
                }
                composable(route = BottomBarScreen.Settings.route) {
                    DisposableEffect(Unit) {
                        println("Settings")
                        onDispose {  }
                    }
                }
            }
        }
    }
}

sealed class BottomBarScreen(
    val route: String,
) {
    object Home: BottomBarScreen(
        route = "Home",
    )

    object Settings: BottomBarScreen(
        route = "Settings",
    )
}

NoSuchMethodError usually indicates there is a binary incompatibility, could you provide your project or just build.gradle with the dependencies and gradle/lib.versions.toml?

@igordmn igordmn added wait for reply Further information is requested and removed submitted labels Jul 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working wait for reply Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants