Android 应用程序不会启动 noClassDefFoundError

Posted

技术标签:

【中文标题】Android 应用程序不会启动 noClassDefFoundError【英文标题】:Android app won't start noClassDefFoundError 【发布时间】:2012-04-18 09:39:03 【问题描述】:

我正在为 android 创建一个 gps 应用程序!现在我偶然发现了一个问题。该应用程序根本没有启动......关于如何解决这个问题的任何想法?

04-05 12:54:50.877: D/dalvikvm(540): Not late-enabling CheckJNI (already on)
04-05 12:54:51.018: I/dalvikvm(540): Turning on JNI app bug workarounds for target SDK version 5...
04-05 12:54:51.417: I/dalvikvm(540): Could not find method org.acra.ACRA.init, referenced from method com.kulplex.gaia.GaiaApp.onCreate
04-05 12:54:51.417: W/dalvikvm(540): VFY: unable to resolve static method 652: Lorg/acra/ACRA;.init (Landroid/app/Application;)V
04-05 12:54:51.417: D/dalvikvm(540): VFY: replacing opcode 0x71 at 0x0000
04-05 12:54:51.457: D/AndroidRuntime(540): Shutting down VM
04-05 12:54:51.457: W/dalvikvm(540): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
04-05 12:54:51.477: E/AndroidRuntime(540): FATAL EXCEPTION: main
04-05 12:54:51.477: E/AndroidRuntime(540): java.lang.NoClassDefFoundError: org.acra.ACRA
04-05 12:54:51.477: E/AndroidRuntime(540):  at com.kulplex.gaia.GaiaApp.onCreate(GaiaApp.java:54)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3954)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.app.ActivityThread.access$1300(ActivityThread.java:123)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1185)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.os.Looper.loop(Looper.java:137)
04-05 12:54:51.477: E/AndroidRuntime(540):  at android.app.ActivityThread.main(ActivityThread.java:4424)
04-05 12:54:51.477: E/AndroidRuntime(540):  at java.lang.reflect.Method.invokeNative(Native Method)
04-05 12:54:51.477: E/AndroidRuntime(540):  at java.lang.reflect.Method.invoke(Method.java:511)
04-05 12:54:51.477: E/AndroidRuntime(540):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-05 12:54:51.477: E/AndroidRuntime(540):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-05 12:54:51.477: E/AndroidRuntime(540):  at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

您需要为我们发布代码以缩小问题范围。 您应该发布您的代码,但对于我在您的错误中看到的内容,您使用的是 mapview 和线程,据我所知,线程和 mapview 存在问题,因为它“似乎” mapviews 应该在主线程中处理。 发布您的错误日志并不能解决您的问题。代码呢?/// 【参考方案1】:

如果您最近更新到 ADT 17 及更高版本,他们已经更改了 lib 库处理。

所以您需要将您的 lib 目录重命名为 libs, 然后右键单击您的项目 > 属性 > Java 构建路径 > 库 > 选择所有带有错误标记的 jar 并单击 remove > 单击 add JARs > 从新的 libs 目录中选择所有 jar。

希望这会有所帮助。

【讨论】:

【参考方案2】:

更新到最新的 Android 工具后,我遇到了同样的问题。

在项目属性、Java Build Path、Order 和 Export 部分,我必须确保选中 Android Private Libraries。

然后我不得不清理项目。之后它似乎工作了。

这确实是 Java 构建路径的“订购和导出”的问题。

升级时,新的“Android 私有库”的“订购和导出”并不总是被选中。 android-support-v4.jar 现在位于“Android Private Libraries”部分。

要解决此问题,请转到“订购和导出”并选中“Android 私有库”。然后刷新/清理/重建。

为库项目完成此“修复”后,您可能需要关闭并重新打开任何依赖项目,因为他们可能不会立即看到此“修复”。

我找到了答案here。

【讨论】:

这是在用 ACRA 4.5 和最新的 android sdk 工具 22、构建工具 17 愚弄我。非常感谢您的帮助。 同样如此,在更新到 SDK Tools 22 和 Build Tools 17 后,我必须在 Order and Export 选项卡中勾选 Android Private Libraries 的复选框。

以上是关于Android 应用程序不会启动 noClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用程序不会启动 noClassDefFoundError

解决Exception:Could not open Hibernate Session for transaction; nested exception is java.lang.NoClassD

Android Emulator 不会运行从 Eclipse 启动的应用程序

Android 应用程序不会启动,也不会列出错误/警告。使用片段和问题似乎与 var args = ViewFragmentArgs

Android:单击按钮时默认选项卡式活动不会启动

HaxeFlixel - 带有 android 的 Hello World 不会启动/关闭