java - 未知错误:在路径上找不到类:DexPathList
问题描述
我的应用程序最近崩溃了,无论我进行什么更改都无法正常工作。它早些时候工作得很好,但是我一定是在重构一些变量/类时犯了一个错误。从 LOGCAT 返回的错误提到了一个我从未在我的项目中使用或实现过的类 NotifyStart,所以我不知道它是从哪里来的。我在下面包含了从 LOGCAT 返回的错误。
我已经尝试清理和重建以及禁用该项目的即时运行功能,但到目前为止没有任何效果。在 Home 活动有机会弹出之前,应用程序将无法启动并崩溃。
2019-07-24 20:38:57.065 27709-27709/com.example.camerakitqr E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.camerakitqr, PID: 27709
java.lang.RuntimeException: Unable to instantiate application com.example.camerakitqr.NotifiyStart: java.lang.ClassNotFoundException: Didn't find class "com.example.camerakitqr.NotifiyStart" on path: DexPathList[[zip file "/data/app/com.example.camerakitqr-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.camerakitqr-1/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:807)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5477)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1595)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.camerakitqr.NotifiyStart" on path: DexPathList[[zip file "/data/app/com.example.camerakitqr-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.camerakitqr-1/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newApplication(Instrumentation.java:992)
at android.app.LoadedApk.makeApplication(LoadedApk.java:801)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5477)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1595)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
解决方案
您必须为具有超过 64K 方法的应用程序启用multidex。
修改你的 build.gradle:
android {
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
minSdkVersion 14 //lower than 14 doesn't support multidex
targetSdkVersion 22
// Enabling multidex support.
multiDexEnabled true
}
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
如果您正在运行单元测试,您将希望将其包含在您的 Application 类中:
public class YouApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
或者只是让您的应用程序类扩展 MultiDexApplication
public class Application extends MultiDexApplication {
}
注意: Android 5.0(API 级别 21)及更高版本使用原生支持多索引的 ART。因此,如果您的 minSdkVersion 为 21 或更高,则不需要 multidex 支持库。
推荐阅读
- visual-studio - Visual Studio 扩展代码-/Editorstyle
- c++ - 剥离评论功能
- graphql - 设置 AWSAppSyncClient、Apollo 和 React 的正确方法
- tensorflow - 由于 Keras,模块“tensorflow”没有属性“占位符”
- ios - 退出 UIViewController 时禁用“保存密码”操作表?
- c# - 不记名令牌的 NSwag CSharpClientGenerator 自定义请求标头
- generics - 如何使用闭包抽象数据和操作
- nativescript - {NS}-Vue 中的 RadAutocomplete 问题
- python - 使用 python + selenium+ 登录网站
- c++ - 链表概念