【问题标题】:Application runs fine on emulator but gives NoClassDefFoundError on device应用程序在模拟器上运行良好,但在设备上出现 NoClassDefFoundError
【发布时间】:2012-11-09 13:14:50
【问题描述】:

我开发了一个应用程序,它在模拟器上按预期运行,但在我的设备(HTC one X)中运行它时出错。以下是logcat中显示的错误。有一种方法可以创建通知。调用此方法createNotification() 时出现错误。 Logcat 如下:

11-09 13:40:13.350: E/AndroidRuntime(5294): FATAL EXCEPTION: main
11-09 13:40:13.350: E/AndroidRuntime(5294): java.lang.NoClassDefFoundError: android.app.TaskStackBuilder
11-09 13:40:13.350: E/AndroidRuntime(5294):     at com.example.accessibility.Accessibility.createNotification(Accessibility.java:205)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at com.example.accessibility.Accessibility$1.onClick(Accessibility.java:69)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.view.View.performClick(View.java:3538)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.view.View$PerformClick.run(View.java:14319)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.os.Handler.handleCallback(Handler.java:608)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.os.Looper.loop(Looper.java:156)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at android.app.ActivityThread.main(ActivityThread.java:5045)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at java.lang.reflect.Method.invokeNative(Native Method)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at java.lang.reflect.Method.invoke(Method.java:511)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-09 13:40:13.350: E/AndroidRuntime(5294):     at dalvik.system.NativeStart.main(Native Method)

如果有人能帮我解决这个错误,我将不胜感激。

【问题讨论】:

    标签: android android-emulator noclassdeffounderror


    【解决方案1】:

    TaskStackBuilder 从 API 级别 16 开始可用(Android 4.1 也称为 Jellybean)。您的 HTC One X 装有 Android 4.0。

    【讨论】:

    • 这很有帮助。在我的 createNotification() 方法中是否有其他实现 TaskStackBuilder 的方法。但是这个链接说它可以从 3.0 和更新的版本中获得 ..developer.android.com/reference/android/support/v4/app/…
    • 是的,您可以使用向后兼容库(这是您在评论中发布的链接。您应该使用android.app.TaskStackBuilder,而不是使用android.support.v4.app.TaskStackBuilder,并确保包含适当的支持库在你的构建中。见developer.android.com/tools/extras/support-library.html
    • 非常感谢大卫..你建议的链接真的很有帮助,现在它可以在我的设备上运行..
    • 完成!!我是 android 开发的新手,我很喜欢它!
    【解决方案2】:

    您最近是否更新了您的 eclipse android 插件 (adt r17)?那么以下链接可能会有所帮助:

    How to fix the classdefnotfounderror with adt-17

    如果没有,请发布一些代码。

    【讨论】:

      【解决方案3】:

      正如@David Wasser 提到的,TaskStackBuilder 是在 API 级别 16 (Android 4.1) 中添加的

      您可以通过添加 import android.support.v4.app.TaskStackBuilder; 而不是 import android.app.TaskStackBuilder; 来解决您的问题

      确保您的应用添加了 v4 / v7 支持库

      【讨论】:

        最近更新 更多