【问题标题】:java.lang.ClassNotFoundException : dalvik.system.BaseDexClassLoader.findClassjava.lang.ClassNotFoundException : dalvik.system.BaseDexClassLoader.findClass
【发布时间】:2017-12-06 10:23:45
【问题描述】:

我在 Google Play 开发者控制台中不断收到此错误报告。它看起来像 MultiDex 错误。

java.lang.RuntimeException: 
  at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4514)
  at android.app.ActivityThread.access$1500(ActivityThread.java:151)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
  at android.os.Handler.dispatchMessage(Handler.java:110)
  at android.os.Looper.loop(Looper.java:193)
  at android.app.ActivityThread.main(ActivityThread.java:5299)
  at java.lang.reflect.Method.invokeNative(Native Method:0)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
  at dalvik.system.NativeStart.main(Native Method:0)

Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
  at android.app.Instrumentation.newApplication(Instrumentation.java:975)
  at android.app.LoadedApk.makeApplication(LoadedApk.java:511)

我已经在 gradle.build 中添加了这个:

defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...

// Enabling multidex support.
multiDexEnabled true
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}

 @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(newBase);
        try {
            MultiDex.install(this);
        }catch (RuntimeException e){
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }
    }

我在 android 4.4、5.0、5.1、6.0 中仍然遇到此错误。请帮忙!!

【问题讨论】:

  • 你注册MutlidexApplication类到manifest了吗?
  • 您是否在应用程序部分设置了android:name="android.support.multidex.MultiDexApplication"
  • 不,我在主要活动中添加了 attachBaseContext 方法
  • 有没有人尝试使用调试器并在此处添加断点:ClassLoader.java:457 或此处BaseDexClassLoader.java:56 以查看它尝试加载的类并调查它是否在类路径上?
  • 这里有同样的问题。这是罕见的,但它已经周期性地发生了一段时间。大多数崩溃来自 Android 4.4,一些来自 Android 5.0,极少数来自 Android 4.2、Android 5.1。

标签: java android classnotfoundexception android-multidex


【解决方案1】:

Android 中java.lang.ClassNotFoundException 有多种变体,其中大部分是由错误的 Proguard 配置、IDE 在构建时未正确关闭之前启动的设备实例等引起的。

关注Unexpected crash in BaseDexClassLoader了解更多详情。

【讨论】:

    【解决方案2】:

    这可能是因为依赖冲突(同一个类可能存在于两个库中)。 所以在你的依赖中搜索 BaseDexClassLoader 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多