以下是我启动应用时收到的异常消息。
致命例外:主程序:net.johnhany.opencv3jniPID:10721 java.lang.RuntimeException:无法实例化活动 ComponentInfo {net.johnhany.opencv3jni / net.johnhany.opencv3jni.MainActivity}: java.lang.ClassNotFoundException:没找到类 路径上的“net.johnhany.opencv3jni.MainActivity”:DexPathList [[zip文件] “/data/app/net.johnhany.opencv3jni-1/base.apk"],nativeLibraryDirectories=[/data/app/net.johnhany.opencv3jni-1lib/arm, / vendor / lib,/ system / lib]] android.app.ActivityThread.performLaunchActivityActivityThread.java:2322) 在 android.app.ActivityThread.handleLaunchActivityActivityThread.java:2474) 在android.app.ActivityThread.ess $ 800(ActivityThread.java:144)at android.app.ActivityThread $ H.handleMessageActivityThread.java:1359)at android.os.Handler.sage(Handler.java:102)at android.os.Looper.loopLooper.java:155)at android.app.ActivityThread.mainActivityThread.java:5696)at java.lang.reflect.Method.invokeNative Method)at java.lang.reflect.Method.invokeMethod.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java:1028) 在com.android.internal.os.Init.main(ZygoteInit.java:823)引起: java.lang.ClassNotFoundException:没找到类 路径上的“net.johnhany.opencv3jni.MainActivity”:DexPathList [[zip文件] “/data/app/net.johnhany.opencv3jni-1/base.apk"],nativeLibraryDirectories=[/data/app/net.johnhany.opencv3jni-1/lib/arm/vendor/lib, / system / lib]] dalvik.system.BaseDexClassLoader.findClassBaseDexClassLoader.java:56) 在java.lang.ClassLoader.loadClassClassLoader.java:511)at java.lang.ClassLoader.loadClassClassLoader.java:469)at android.app.Instrumentation.newActivityInstrumentation.java:1083)at android.app.ActivityThread.performLaunchActivityActivityThread.java:2312) 在 android.app.ActivityThread.handleLaunchActivityActivityThread.java:2474) 在android.app.ActivityThread.ess $ 800(ActivityThread.java:144)at android.app.ActivityThread $ H.handleMessageActivityThread.java:1359) 在android.os.Handler.sage(Handler.java:102)at android.os.Looper.loopLooper.java:155)at android.app.ActivityThread.mainActivityThread.java:5696)at java.lang.reflect.Method.invokeNative Method)at java.lang.reflect.Method.invokeMethod.java:372)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java:1028) 在com.android.internal.os.Init.main(ZygoteInit.java:823)抑制: java.lang.ClassNotFoundException:net.johnhany.opencv3jni.ty at java.lang.Class.classForNameNative方法)at java.lang.BootClassLoader.Class(ClassLoader.java:781)at java.lang.BootClassLoader.Class(ClassLoader.java:841)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
答案 0 :(得分:16)
使用multi dex解决了我的问题:
android {
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies
{
compile 'com.android.support:multidex:1.0.0'
}
如果您没有覆盖Application类,请编辑清单文件以在标记中设置android:name,如下所示:
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
如果您覆盖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);
}
}
答案 1 :(得分:6)
我在Android Studio中使用Instant Run并且发生了同样的错误,因为我正在安装在debug.apk
文件夹中创建的outputs\apk
并且它变得更小并且缺少类,因为它可能是即时运行的结果。
有人指出关闭即时运行但不是转动即时运行只是通过单击菜单中的Build->Build apk
来构建apk并使用该apk进行测试。
答案 2 :(得分:2)
确保这个Diable preDexLibraries
在app
模块.gradle文件
android {
dexOptions
{
preDexLibraries false
}
}
答案 3 :(得分:1)
当应用程序无法找到启动器活动时,通常会发生此错误。
建议:
检查您的mainfest文件以获取正确的启动器活动
检查您的主要活动是从活动或Appcompatactivity扩展
答案 4 :(得分:0)
这是我的解决方案: 1.将AndroidManifest中的应用程序名称更改为完整路径 2.清洁项目 3.重建项目 4.Build APK
答案 5 :(得分:0)
就我而言,我从模块级gradle文件中错误地删除了 apply插件:'kotlin-android'。
再次放置后,它将重新开始工作。
答案 6 :(得分:0)
如果您使用的是 AndroidX
,这是 MultiDex 库
implementation "androidx.multidex:multidex:2.0.1"
还有
defaultConfig {
multiDexEnabled true
}
并使您的应用程序类继承自 MultiDexApplication
答案 7 :(得分:-2)
我曾经遇到过这个问题而且清楚地记得:
我的错误
我在不同的文件夹中创建了两个具有相同名称的项目。
我的解决方案
在发现这个我删除旧项目然后:
1.清洁项目
2.Rebuild
3.Run