java.lang.ClassNotFoundException:在路径上找不到类:DexPathList,更新sdk后

时间:2017-01-05 06:18:35

标签: android android-studio sdk classnotfoundexception

大家好我的应用程序一切正常,直到昨天,我昨天更新了我的SDK,它开始给出错误,它首先给出了错误

  

在值v24 ....

处找不到资源

这样的事情,我搜索并通过更改build.gradle中的以下行来解决它

compileSdkVersion 25
buildToolsVersion '25.0.2'

现在错误消失了更高的Android版 7.1.1 中完全正常运行 但是当我在Android的较低版本中运行时,它会发出以下错误

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.wowio.ebookreader, PID: 15469
                  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wowio.ebookreader/com.eminosoft.ebookread.activity.SplashScreenActivity}: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378)
                      at android.app.ActivityThread.access$800(ActivityThread.java:155)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:136)
                      at android.app.ActivityThread.main(ActivityThread.java:5433)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
                      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.newActivity(Instrumentation.java:1068)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378) 
                      at android.app.ActivityThread.access$800(ActivityThread.java:155) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:136) 
                      at android.app.ActivityThread.main(ActivityThread.java:5433) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:515) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                      at dalvik.system.NativeStart.main(Native Method) 

我已经已经尝试了以下事情

1.清洁项目

2.invalidate cache / restart

3.删除设备上的应用

已经查看了这些问题Question 1Question 2没有任何效果。我该如何解决这个问题?

如果你需要任何东西,我会更新它的问题

我的build.gradle文件

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'

    defaultConfig {
        applicationId "com.wowio.ebookreader"
        minSdkVersion 14
        targetSdkVersion 23
        multiDexEnabled true

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {

    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
     // the are many more dependencies i removed to decrease size

    }

5 个答案:

答案 0 :(得分:4)

写一个类EnableMultiDex,如下所示

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

并在AndroidManifest.xml中将此类写入Application标记

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

答案 1 :(得分:4)

是的,可能是上面的答案是正确的我没有尝试,因为它是。但我以相反的方式解决了#34;你在android studio&#34;的设置中删除了即时运行选项。

转到 - &gt;文件菜单 - &gt;选择设置 - &gt;选择构建,执行,部署 - &gt;选择即时运行 - &gt;取消选中&#34;启用即时运行&#34;。

这对我有用。但谷歌地图集成应用程序等一些应用程序需要立即运行。

答案 2 :(得分:2)

在我的情况下,我的项目在以下情况后再次开始工作:

  • 从模拟器(或真实设备)中卸载我的项目
  • 清洁项目
  • 制作项目

答案 3 :(得分:0)

同样的错误发生在我身上,因为我安装了在outputs \ apk文件夹中创建的调试apk,它变得更小并且缺少类,因为它可能是即时运行的结果。 因此,不要仅仅通过构建APK(通过Build-&gt;在菜单中构建apk)来关闭即时运行并使用此功能。

答案 4 :(得分:0)

禁用即时运行为我工作 我认为出现此问题是因为使用安装运行(减小apk大小)构建时缺少某些类