【问题标题】:java.lang.NoClassDefFoundError thrown with my own packages in Android 1.5java.lang.NoClassDefFoundError 在 Android 1.5 中与我自己的包一起抛出
【发布时间】:2010-05-05 15:26:22
【问题描述】:

我开发了一个应用程序,它的项目中有几个包... 在第一行代码中立即调用其中一个包中的类,这会引发可怕的 java.lang.NoClassDefFoundError 错误...... 我不明白,这个包只是在项目中,它在我的 Android 1.6 设备上运行良好,但不适用于我的 1.5 设备...... 我不得不说该项目最初是为 1.6 设置的,但后来我将清单内的内容从 4 更改为 3... 这是不好的做法吗?或者可能与平台版本无关?

我也确实从 DDMS 中得到了这些行:

05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejecting opcode 0x62 at 0x0034
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejected ***/android/managementModule/Management;.getDeviceSpecifics ()V
05-04 17:24:59.921: WARN/dalvikvm(2041): Verifier rejected class ***/android/managementModule/Management;

这就是 ManagementModule,它还尝试检索设备本身的多个信息字段... 同样,这在 1.6 设备上工作得很好,即使那是一个开发设备,而我的 1.5 设备是一个非开发设备......

【问题讨论】:

标签: android package noclassdeffounderror


【解决方案1】:

验证器在 1.5 和 1.6 之间没有太大变化,因此它应该同样高兴或不高兴。 (在 >= 2.0 上,它会在第一次使用该字段时抛出 NoSuchFieldError,而不是拒绝整个类。)

问题似乎是 Android 1.5(“Cupcake”)中不存在 Build.MANUFACTURER 字段。我相信它是在 1.6(“甜甜圈”)中引入的。

【讨论】:

  • 感谢我检查了文档,你是对的,它在 1.5 上不受支持,但我必须找到一种方法使其向后兼容
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多