ClassNotFoundException:在路径上找不到类“com.example.classname”:DexPathList

时间:2016-06-13 20:17:45

标签: android android-multidex

并非总是如此,但有时我在运行我的应用程序时会在logcat中看到此异常

  

引起:java.lang.ClassNotFoundException:在路径上找不到类“com.example.classname”:DexPathList [[directory“。”],nativeLibraryDirectories = [/ vendor / lib,/ system / lib]]

应用不会崩溃,我的项目中会出现com.example.classname。 我正在使用android studio 2.2,我正在为我们的项目使用multidex。 我怀疑这个问题是因为multidex。

有关如何修复此异常的任何想法?

我们的build.gradle文件很大。 我正在添加它的一部分

     compileSdkVersion 23
        buildToolsVersion '23.0.3'

        defaultConfig {
            minSdkVersion 17
            targetSdkVersion 22
    multiDexEnabled true
    ......
    }
dependencies {
    compile 'com.android.support:multidex:1.0.1'
        testCompile('org.robolectric:shadows-multidex:3.0') {
            exclude group: 'org.robolectric', module: 'robolectric'
        }
}

在自定义应用程序类

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

1 个答案:

答案 0 :(得分:-1)

尝试在您的应用程序类中使用这几行

extend android.app.Application

这肯定会有效:

由于内存不足,android创建了两个dex文件,所以

   attachBaseContext() 

管理这个问题

   @Override
     protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
       }

并在您的申请中使用

    defaultConfig {
    applicationId "com.example.YourApplication"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"

    multiDexEnabled true

    }

   dexOptions {
    javaMaxHeapSize "4g"
    }