'NoClassDefFoundError: Failed resolution of: Lorg/slf4j/LoggerFactory' in kotlin multiplatform for android target
sgpublic opened this issue · 2 comments
sgpublic commented
Reproduce step:
- Create a new "Kotlin Multiplatform App" with Android Studio.
- Edit
<rootProject>/shared/build.gradle.kts
, addimplementation("io.github.oshai:kotlin-logging:7.0.0")
:listOf( iosX64(), iosArm64(), iosSimulatorArm64() ).forEach { it.binaries.framework { baseName = "shared" isStatic = true } } sourceSets { commonMain.dependencies { implementation("io.github.oshai:kotlin-logging:7.0.0") // add this line //put your multiplatform dependencies here } commonTest.dependencies { implementation(libs.kotlin.test) } }
- Edit
Greeting.kt
incommonMain
:class Greeting { private val platform: Platform = getPlatform() private val logger = KotlinLogging.logger("Greeting") // add this line fun greet(): String { logger.debug { "Greeting#greet" } // add this line return "Hello, ${platform.name}!" } }
- sync project, run
androidApp
directly, app crashed:18:44:24.922 E System zygote died with fatal exception java.lang.NoClassDefFoundError: Failed resolution of: Lorg/slf4j/LoggerFactory; at io.github.oshai.kotlinlogging.slf4j.internal.Slf4jLoggerFactory.jLogger$kotlin_logging_debug(Slf4jLoggerFactory.kt:11) at io.github.oshai.kotlinlogging.internal.KLoggerFactory.logger$kotlin_logging_debug(KLoggerFactory.kt:13) at io.github.oshai.kotlinlogging.KotlinLogging.logger(KotlinLogging.kt:24) at io.github.sgpublic.kotlinloggingtest.Greeting.<init>(Greeting.kt:7) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-1$1.invoke(MainActivity.kt:22) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-1$1.invoke(MainActivity.kt:21) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.material3.SurfaceKt$Surface$1.invoke(Surface.kt:132) at androidx.compose.material3.SurfaceKt$Surface$1.invoke(Surface.kt:114) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.material3.SurfaceKt.Surface-T9BRK9s(Surface.kt:111) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-2$1.invoke(MainActivity.kt:18) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-2$1.invoke(MainActivity.kt:17) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.material3.TextKt.ProvideTextStyle(Text.kt:360) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81) at androidx.compose.material3.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.material3.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:73) at io.github.sgpublic.kotlinloggingtest.android.MyApplicationThemeKt.MyApplicationTheme(MyApplicationTheme.kt:49) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-3$1.invoke(MainActivity.kt:17) at io.github.sgpublic.kotlinloggingtest.android.ComposableSingletons$MainActivityKt$lambda-3$1.invoke(MainActivity.kt:16) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:428) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:195) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:119) 18:44:24.922 E at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:118) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(AndroidCompositionLocals.android.kt:110) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:158) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.android.kt:157) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:157) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.android.kt:142) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35) at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:78) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3340) at androidx.compose.runtime.ComposerImpl.composeContent$runtime_release(Composer.kt:3273) at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:588) at androidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:1013) at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:520) at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:142) at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133) at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(AndroidComposeView.android.kt:1191) at androidx.compose.ui.platform.WrappedComposition.setContent(Wrapper.android.kt:133) at androidx.compose.ui.platform.WrappedComposition.onStateChanged(Wrapper.android.kt:183) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.kt:314) at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.kt:192) at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:140) at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(Wrapper.android.kt:133) at androidx.compose.ui.platform.AndroidComposeView.onAttachedToWindow(AndroidComposeView.android.kt:1266) at android.view.View.dispatchAttachedToWindow(View.java:22327) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3544) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3551) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3551) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3551) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3551) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3492) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2917) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10163) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1634) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1643) at android.view.Choreographer.doCallbacks(Choreographer.java:1176) at android.view.Choreographer.doFrame(Choreographer.java:1080) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1609) at android.os.Handler.handleCallback(Handler.java:958) 18:44:24.922 E at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:224) at android.os.Looper.loop(Looper.java:318) at android.app.ActivityThread.main(ActivityThread.java:8711) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978) Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory ... 91 more 18:44:24.923 D Shutting down VM
Other information:
- Android Studio: 2023.1.1 Patch 2 / 2024.1.1
- kotlin: 1.9.20 / 2.0.0
- gradle: 8.2 / 8.8
github-actions commented
Thank you for reporting an issue. See the wiki for documentation and slack for questions.
sgpublic commented
Sorry for the bothering, I missed the "slf4j-api".