KunMinX / Strict-DataBinding

善用 DataBinding 彻底解决 “View 实例的 Null 安全一致性问题”
96 stars 17 forks source link

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/spreadit/module_main/BR; #9

Closed xiaxinqing closed 1 year ago

xiaxinqing commented 1 year ago

第一次尝试使用, 运行时异常:找不到BR image image

页面没有任何数据,启动就闪退了,请大佬指点。

xiaxinqing commented 1 year ago

@KunMinX 2023-05-10 15:05:32.901 14861-14861/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.spreadit.spreaditapp, PID: 14861 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/spreadit/module_main/BR; at com.spreadit.module_main.SplashActivity.getDataBindingConfig(SplashActivity.java:28) at com.spreadit.lib_base.base.DataBindingActivity.onCreate(DataBindingActivity.java:60) at com.spreadit.lib_base.base.BaseActivity.onCreate(BaseActivity.java:53) at android.app.Activity.performCreate(Activity.java:8591) at android.app.Activity.performCreate(Activity.java:8570) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4150) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) 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:2574) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8757) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.spreadit.module_main.BR" on path: DexPathList[[zip file "/data/app/tcNN_mIZQ8cUsiAOXf_lPA==/com.spreadit.spreaditapp-7U2mcusRLUOqeQ8wsA08dQ==/base.apk"],nativeLibraryDirectories=[/data/app/tcNN_mIZQ8cUsiAOXf_lPA==/com.spreadit.spreaditapp-7U2mcusRLUOqeQ8wsA08dQ==/lib/arm, /data/app/~~tcNN_mIZQ8cUsiAOXf_lPA==/com.spreadit.spreaditapp-7U2mcusRLUOqeQ8wsA08dQ==/base.apk!/lib/armeabi-v7a, /system/lib, /system/system_ext/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.spreadit.module_main.SplashActivity.getDataBindingConfig(SplashActivity.java:28)  at com.spreadit.lib_base.base.DataBindingActivity.onCreate(DataBindingActivity.java:60)  at com.spreadit.lib_base.base.BaseActivity.onCreate(BaseActivity.java:53)  at android.app.Activity.performCreate(Activity.java:8591)  at android.app.Activity.performCreate(Activity.java:8570)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4150)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)  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:2574)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loopOnce(Looper.java:226)  at android.os.Looper.loop(Looper.java:313)  at android.app.ActivityThread.main(ActivityThread.java:8757)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 

KunMinX commented 1 year ago

没懂你遇到的问题哈,不过 DataBinding 在 IDE 中确实时不时有奇怪的抽风,

建议是先跑下本示例项目,如果能跑起来,排除是 IDE 环境,

那么继续回到自己项目中,检查 AndroidManifest 中定义的包名,和 build.gradle 中定义的 ApplicationId 是否一致,

如果一致无误,clean 该项目然后重新 build 试试,

xiaxinqing commented 1 year ago

@KunMinX 我用了组件化,宿主包名确实和这个组件的包名不一样,这个有影响吗?(示例项目OK的)

KunMinX commented 1 year ago

检查一下宿主模块和组件模块的 build.gradle 中是否都有开启 databinding true,

如有,我暂时也没懂其他可能的缘由,可以咨询 chatgpt 看看

xiaxinqing commented 1 year ago

清理缓存就好了, 关闭了,感谢大佬回复