kanyun-inc / Kace

Kace: Kotlin Android Compatible Extensions, a framework for assisting in the seamless migration from kotlin-android-extensions
Apache License 2.0
261 stars 11 forks source link

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/kanyun/kace/KaceLifecycleObserver; #34

Closed guozhiqiang123 closed 1 year ago

guozhiqiang123 commented 1 year ago

如题报错。

 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/kanyun/kace/KaceLifecycleObserver;
        at com.kanyun.kace.AndroidExtensionsComponentKt.AndroidExtensionsComponent(AndroidExtensionsComponent.kt:34)
        at com.kanyun.kace.AndroidExtensionsImpl.initComponent(AndroidExtensionsImpl.kt:29)
        at com.kanyun.kace.AndroidExtensionsImpl.findViewByIdCached(AndroidExtensionsImpl.kt:40)
        at com.xinshuyc.legao.activity.MainActivity.findViewByIdCached(Unknown Source:7)
        at com.xinshuyc.legao.activity.MainActivity.initView(MainActivity.kt:957)
        at com.xinshuyc.legao.activity.MainActivity.onCreate(MainActivity.kt:111)
        at android.app.Activity.performCreate(Activity.java:7916)
        at android.app.Activity.performCreate(Activity.java:7903)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3297)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3471)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2058)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:226)
        at android.app.ActivityThread.main(ActivityThread.java:7592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.ClassNotFoundException: com.kanyun.kace.KaceLifecycleObserver
        at java.lang.VMClassLoader.findLoadedClass(Native Method)
        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.kanyun.kace.AndroidExtensionsComponentKt.AndroidExtensionsComponent(AndroidExtensionsComponent.kt:34) 
        at com.kanyun.kace.AndroidExtensionsImpl.initComponent(AndroidExtensionsImpl.kt:29) 
        at com.kanyun.kace.AndroidExtensionsImpl.findViewByIdCached(AndroidExtensionsImpl.kt:40) 
        at com.xinshuyc.legao.activity.MainActivity.findViewByIdCached(Unknown Source:7) 
        at com.xinshuyc.legao.activity.MainActivity.initView(MainActivity.kt:957) 
        at com.xinshuyc.legao.activity.MainActivity.onCreate(MainActivity.kt:111) 
        at android.app.Activity.performCreate(Activity.java:7916) 
        at android.app.Activity.performCreate(Activity.java:7903) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3297) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3471) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2058) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:226) 
        at android.app.ActivityThread.main(ActivityThread.java:7592) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
     Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/lifecycle/DefaultLifecycleObserver;
        at com.kanyun.kace.AndroidExtensionsComponentKt.AndroidExtensionsComponent(AndroidExtensionsComponent.kt:34) 
        at com.kanyun.kace.AndroidExtensionsImpl.initComponent(AndroidExtensionsImpl.kt:29) 
        at com.kanyun.kace.AndroidExtensionsImpl.findViewByIdCached(AndroidExtensionsImpl.kt:40) 
        at com.xinshuyc.legao.activity.MainActivity.findViewByIdCached(Unknown Source:7) 
        at com.xinshuyc.legao.activity.MainActivity.initView(MainActivity.kt:957) 
        at com.xinshuyc.legao.activity.MainActivity.onCreate(MainActivity.kt:111) 
        at android.app.Activity.performCreate(Activity.java:7916) 
        at android.app.Activity.performCreate(Activity.java:7903) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3297) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3471) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2058) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:226) 
        at android.app.ActivityThread.main(ActivityThread.java:7592) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.DefaultLifecycleObserver" on path: DexPathList[[zip file "/data/app/com.yousutong.tech-g3a-YMnGQ6rvFR09zxc1FQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.yousutong.tech-g3a-YMnGQ6rvFR09zxc1FQ==/lib/arm64, /data/app/com.yousutong.tech-g3a-YMnGQ6rvFR09zxc1FQ==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
RicardoJiang commented 1 year ago

应该是因为找不到KaceLifecycleObserver的父类DefaultLifecycleObserver,可以添加上依赖 例如:implementation("androidx.lifecycle:lifecycle-common:2.4.0")

guozhiqiang123 commented 1 year ago

真的是这个问题,我搞了几个小时,笑哭!

wsxyeah commented 8 months ago

也遇到这个问题了~

看起来 kace-runtime 是通过 compileOnly 依赖 lifecycle-common 的,如果是强依赖的话能否改为 implementation 呢?

https://github.com/kanyun-inc/Kace/blob/main/kace-runtime/build.gradle#L36