【问题标题】:implement kotlin module with java application produce java.lang.NoClassDefFoundError: Failed resolution of resource classes使用 java 应用程序实现 kotlin 模块产生 java.lang.NoClassDefFoundError: 资源类解析失败
【发布时间】:2020-07-07 18:37:25
【问题描述】:

我目前正在尝试将用单个模块编写的项目迁移到 feature-module-clean-architecture。 在这里,我在 kotlin 中编写了多个模块,这些模块也一直在为另一个项目工作,并且在该项目中运行良好。 但是当我在项目中实现这个模块时,我遇到了这个烦人的错误:

在添加静态字符串而不是从资源中获取后,这被删除了

java.lang.NoClassDefFoundError: Failed resolution of: L........../R$string;

还是有问题

java.lang.NoClassDefFoundError: Failed resolution of: L........../R$layout;

请在下面找到完整的跟踪:

2020-07-08 00:03:21.895 16927-16927/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.nitv.prabhutv.movies, PID: 16927
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/sadip/featureauth/R$layout;
        at com.sadip.featureauth.ui.auth.AuthFragment.layoutId(AuthFragment.kt:62)
        at sadip.base.basesetup.platform.BaseFragment.onCreateView(BaseFragment.kt:64)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439)
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613)
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246)
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
        at android.app.Activity.performStart(Activity.java:7169)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6691)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sadip.featureauth.R$layout" on path: DexPathList[[zip file "/data/app/com.nitv.prabhutv.movies-Rln9LCYsxpN-Eb3aj__UGw==/base.apk"],nativeLibraryDirectories=[/data/app/com.nitv.prabhutv.movies-Rln9LCYsxpN-Eb3aj__UGw==/lib/arm, /data/app/com.nitv.prabhutv.movies-Rln9LCYsxpN-Eb3aj__UGw==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.sadip.featureauth.ui.auth.AuthFragment.layoutId(AuthFragment.kt:62) 
        at sadip.base.basesetup.platform.BaseFragment.onCreateView(BaseFragment.kt:64) 
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881) 
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238) 
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303) 
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:439) 
        at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079) 
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869) 
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824) 
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663) 
        at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManagerImpl.java:2613) 
        at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:246) 
        at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:542) 
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) 
        at android.app.Activity.performStart(Activity.java:7169) 
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937) 
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) 
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) 
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6691) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

注意:multidex开启,应用扩展multidexApplication,堆大小为4g,dexoption为jumbo,

【问题讨论】:

    标签: android kotlin android-multidex clean-architecture


    【解决方案1】:

    这是一个很大且真正具有误导性的 android 错误日志。问题在于项目主 gradle 文件中使用的 Realm 上的库版本。刚更新库版本就解决了。

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 2019-09-27
      • 1970-01-01
      • 2021-08-04
      • 2020-06-24
      • 2017-06-16
      • 2018-03-14
      • 2017-10-12
      • 1970-01-01
      相关资源
      最近更新 更多