Android java.lang.NoClassDefFoundError 在我的项目中 class

Android java.lang.NoClassDefFoundError for class in my project

我在初始化 NavigationDrawerRecyclerViewAdapter 时遇到以下错误。

现在 class com.mypackage.app.NavigationDrawerRecyclerViewAdapter 存在并且它是 public 并且它的构造函数也是 public。

1: thread exiting with uncaught exception (group=0x416fed58)
05-18 10:46:20.573 3669-3669/com.mypackage.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mypackage.app, PID: 3669
java.lang.NoClassDefFoundError: com.mypackage.app.NavigationDrawerRecyclerViewAdapter                                                                       at com.mypackage.app.FragmentDrawer.onCreateView(FragmentDrawer.java:68)

清理和重建项目不起作用。关于这里可能出现的问题有什么建议吗?

单击您的项目 -> 属性 -> 构建路径 -> 排序和导出选项卡。 确保选中 "Android Private Libraries" 导出。 如果库已经从 libs/ 文件夹中添加,请删除它们,因为它们会自动添加到 "Android Private Libraries" 部分。

NoClassDefFoundError 表示 class 在编译期间存在,但在您 运行 您的应用程序时不可用,有时静态初始化程序块上的错误也可能导致 NoClassDefFoundError 或此 [= 的上下文12=] 不可访问。 因此,请确保此 class 引用相同的 class 内存。

我找到了答案。

我启用了 multidex,这是导致问题的原因。 我在 build.gradle 中使用编译 'com.google.android.gms:play-services:8.4.0' 而我只需要 com.google.android.gms:play-services-auth:8.4.0.

更改以上内容,我能够 运行 我的应用程序而无需启用 multidex,这会导致 class 未找到错误。

这有帮助:App not launching with multidexEnabled true in android studio - Famous 65k reference method