Android ClassNotFoundException:没有在路径上找到类

这是我启动应用程序时收到的exception消息。

致命exception:主进程:net.johnhany.opencv3jniPID:10721 java.lang.RuntimeException:无法实例化活动ComponentInfo {net.johnhany.opencv3jni / net.johnhany.opencv3jni.MainActivity}:java.lang.ClassNotFoundException:未找到路径上的“net.johnhany.opencv3jni.MainActivity”类:DexPathList [[zip file“/data/app/net.johnhany.opencv3jni-1/base.apk”],nativeLibraryDirectories=[/data/app/net.johnhany。在android.app.ActivityThread上的android.app.ActivityThread.performLaunchActivityActivityThread.java:2322)的android.app.ActivityThread.handleLaunchActivityActivityThread.java:2474)中的opencv3jni-1lib / arm,/ vendor / lib,/ system / lib]。在Android.os.Looper.loopLooper.java的android.app.Handler.sage(Handler.java:102)的android.app.ActivityThread $ H.handleMessageActivityThread.java:1359)ess $ 800(ActivityThread.java:144): 155)在android.app.ActivityThread.mainActivityThread.java:5696)at java.lang.reflect.Method.invokeNative Method)at java.lang.reflect.Method.invokeMethod.java:372 )com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java:1028)at com.android.internal.os.Init.main(ZygoteInit.java:823)引起:java.lang.ClassNotFoundException:Didn’在路径上找到类“net.johnhany.opencv3jni.MainActivity”:DexPathList [[zip file“/data/app/net.johnhany.opencv3jni-1/base.apk”],nativeLibraryDirectories=[/data/app/net。 johnhany.opencv3jni-1 / lib / arm / vendor / lib,/ system / lib]]在java.lang上的dalvik.system.BaseDexClassLoader.findClassBaseDexClassLoader.java:56)java.lang.ClassLoader.loadClassClassLoader.java:511) .ClassLoader.loadClassClassLoader.java:469)在android.app.Instrumentation.newActivityInstrumentation.java:1083)在android.app.ActivityThread.performLaunchActivityActivityThread.java:2312)在android.app.ActivityThread.handleLaunchActivityActivityThread.java:2474)在android .app.ActivityThread.ess $ 800(ActivityThread.java:144)在android.app.ActivityThread $ H.handleMessageActivityThread.java:1359)在android.os.Handler.sage(Handler.java) :102)在android.app.Looper.loopLooper.java:155)在android.app.ActivityThread.mainActivityThread.java:5696)在java.lang.reflect.Method上的java.lang.reflect.Method.invokeNative方法)。 invokeMethod.java:372)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java:1028)at com.android.internal.os.Init.main(ZygoteInit.java:823)Suppressed:java.lang。 java.lang.BootClassLoader.Class(ClassLoader.java:781)中的java.lang.Class.classForNameNative方法中的ClassNotFoundException:net.johnhany.opencv3jni.ty at java.lang.BootClassLoader.Class(ClassLoader.java:841)at at java.lang.ClassLoader.loadClassClassLoader.java:504)… 13更多引起:java.lang.NoClassDefFoundError:使用引导类加载器找不到类; 没有堆栈05-18 16:01:27.927 645-1928 /? E / ActivityManager:App crashedProcess:net.johnhany.opencv3jni

使用multi dex解决了我的问题:

android { defaultConfig { // Enabling multidex support. multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.0' } 

如果不覆盖Application类,请编辑清单文件以在标记中设置android:name,如下所示:

  ...  

如果您覆盖Application类,请将其更改为扩展MultiDexApplication(如果可能),如下所示:

 public class MyApplication extends MultiDexApplication 

或者,如果您重写Application类但无法更改基类,则可以改为覆盖attachBaseContext()方法并调用MultiDex.install(this)以启用multidex:

 public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

我在Android Studio中使用Instant Run并且发生了同样的错误,因为我正在安装在outputs\apk文件夹中创建的debug.apk ,它变得更小并且缺少类,因为它可能是即时运行的结果。

有人指出关闭即时运行但不是转动即时运行只是通过单击菜单中的Build->Build apk并使用该apk进行测试来Build->Build apk

确保这个Diable preDexLibraries

在您的app模块.gradle文件中

 android { dexOptions { preDexLibraries false } } 

当应用程序无法找到启动器活动时,通常会发生此错误。

意见建议:

  1. 检查您的mainfest文件以获取正确的启动器活动

  2. 检查您的主要活动是从活动还是Appcompatactivity扩展

  3. 清理项目并再次构建它。

这是我的解决方案:1。将AndroidManifest中的应用程序名称更改为完整路径2.Clean Project 3.Rebuild Project 4.Build APK

我曾经有过这个问题而且清楚地记得:

我的错
我在不同的文件夹中创建了两个同名的项目。

我的解决方案
在发现这个我删除旧项目,然后:
1.清洁项目
2.Rebuild
3.Run