java.lang.NoClassDefFoundError брошенный с моими собственными пакетами в Android 1.5 - PullRequest
2 голосов
/ 04 мая 2010

Я разработал приложение, которое имеет несколько пакетов в своем проекте ... Класс в одном из этих пакетов вызывается сразу в первой строке кода, которая выдает страшную ошибку 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 - это устройство не для разработки ...

1 Ответ

1 голос
/ 05 мая 2010

Верификатор не сильно изменился между 1,5 и 1,6, поэтому он должен быть одинаково счастливым или несчастным для каждого. (На> = 2.0, он будет выдавать ошибку NoSuchFieldError в точке, где поле впервые используется вместо отклонения всего класса.)

Кажется, проблема в том, что поле Build.MANUFACTURER не существовало в Android 1.5 («Кекс»). Я считаю, что это было введено в 1.6 («Пончик»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...