启动应用程序时ClassNotFoundException - 无法实例化应用程序

时间:2015-03-23 12:03:01

标签: android

长篇故事缩短 - 我的应用程序已经存在了大约4年,现在用户群很少(约500台设备)。它最初是在Win XP机器上开发的,但我在大约一年前迁移到Debian Linux设置。没有问题,一切都很好。

几个月前,我更新了最新的针对Eclipse的Android SDK / ADT,一切都进入了平台(appcompat-v7无法构建,无法识别)。

令人沮丧的是,我已经迁移到了XP盒子,所有这一切看起来都很好,因为我不再遇到严重的错误而且一切都很好。问题是当我部署到我的Nexus 7进行测试时。它安装好,但在启动时我立即得到“不幸的是,nDroid(TE)已经停止”。

Logcat显示以下内容。类“uk.co.beetec.android.nDroidTE.NDroidTE”扩展了Android Application类,并且在我的代码中非常清楚,在构建时没有错误或警告,并且它在AndroidManifest.xml中声明。< / p>

我真的不知道这里出了什么问题。任何人都可以解释堆栈跟踪,因为我不明白可能导致它的原因。

03-23 11:16:25.194: E/AndroidRuntime(16878): FATAL EXCEPTION: main
03-23 11:16:25.194: E/AndroidRuntime(16878): Process: uk.co.beetec.android.nDroidTE, PID: 16878
03-23 11:16:25.194: E/AndroidRuntime(16878): java.lang.RuntimeException: Unable to instantiate application uk.co.beetec.android.nDroidTE.NDroidTE: java.lang.ClassNotFoundException: Didn't find class "uk.co.beetec.android.nDroidTE.NDroidTE" on path: DexPathList[[zip file "/data/app/uk.co.beetec.android.nDroidTE-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.LoadedApk.makeApplication(LoadedApk.java:563)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.ActivityThread.access$1500(ActivityThread.java:151)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.os.Handler.dispatchMessage(Handler.java:102)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.os.Looper.loop(Looper.java:135)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.ActivityThread.main(ActivityThread.java:5254)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at java.lang.reflect.Method.invoke(Native Method)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at java.lang.reflect.Method.invoke(Method.java:372)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
03-23 11:16:25.194: E/AndroidRuntime(16878): Caused by: java.lang.ClassNotFoundException: Didn't find class "uk.co.beetec.android.nDroidTE.NDroidTE" on path: DexPathList[[zip file "/data/app/uk.co.beetec.android.nDroidTE-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
03-23 11:16:25.194: E/AndroidRuntime(16878):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.Instrumentation.newApplication(Instrumentation.java:980)
03-23 11:16:25.194: E/AndroidRuntime(16878):    at android.app.LoadedApk.makeApplication(LoadedApk.java:558)
03-23 11:16:25.194: E/AndroidRuntime(16878):    ... 10 more
03-23 11:16:25.194: E/AndroidRuntime(16878):    Suppressed: java.lang.NoClassDefFoundError: uk.co.beetec.android.nDroidTE.NDroidTE
03-23 11:16:25.194: E/AndroidRuntime(16878):        at dalvik.system.DexFile.defineClassNative(Native Method)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at dalvik.system.DexFile.defineClass(DexFile.java:226)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at dalvik.system.DexPathList.findClass(DexPathList.java:321)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
03-23 11:16:25.194: E/AndroidRuntime(16878):        ... 14 more
03-23 11:16:25.194: E/AndroidRuntime(16878):    Suppressed: java.lang.ClassNotFoundException: uk.co.beetec.android.nDroidTE.NDroidTE
03-23 11:16:25.194: E/AndroidRuntime(16878):        at java.lang.Class.classForName(Native Method)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
03-23 11:16:25.194: E/AndroidRuntime(16878):        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
03-23 11:16:25.194: E/AndroidRuntime(16878):        ... 13 more
03-23 11:16:25.194: E/AndroidRuntime(16878):    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

1 个答案:

答案 0 :(得分:2)

我之前在以下情况中观察到此错误:

1。我正在使用具有启用ART的Kitkat的物理设备(即非仿真器)。当我在使用Dalvik运行时的另一台Kitkat设备上运行应用程序时,错误似乎已经消失。

2。由于我将SVN转移到其他位置时出现.dex构建错误,导致出现同样的问题。我完全删除了旧项目,并在我的计算机上从原始项目创建了一个新的存储库,完全重建项目后,错误没有重新出现。

3. 如果将Eclipse与Maven一起使用,并且已启用multidex,请尝试禁用它并构建项目。如果使用Android Studio,请设置multiDexEnabled = false。这是导致此错误的原因。