Android java.lang.NoClassDefFoundError с использованием JODA-библиотек

Я застрял около 2 часов на проблеме, что я думал, что ее легко решить. Я создаю пользовательскую подборку времени для платформы Android, и из-за медленности стандартных классов java.util.Calendar и java.util.Date я решил использовать библиотеку JODA.

К сожалению, у меня нет опыта работы с ссылками «JAR» (простите меня … я пришел из COM и .NET assemblylies world =) …), но я узнаю несколько советов в Интернете, но, очевидно, они, кажется, ошибаются .. Это шаги, которые я предпринял для использования библиотеки в моем проекте:

  1. Загрузите последнюю библиотеку JODA 2.1
  2. Создайте папку «lib» в моей папке проекта
  3. Добавьте 'joda-time-2.1.jar' в папку 'lib'.
  4. Добавьте библиотеку «joda-time-2.1.jar» в путь сборки.
  5. Добавьте 'joda-time-2.1-javadoc.jar' и 'joda-time-2.1-sources.jar' в папку 'lib'
  6. Установите вышеуказанные библиотеки как «атрибуты источника java» и «местоположение javadoc» для библиотеки ссылок, посвященной joda-time-2.1.
  7. Используйте новую библиотеку в свой код (ehm ehm 'intelli-sense "и компилятор не вызывают никаких ошибок или предупреждений)
  8. Начать отладку на реальном или виртуальном устройстве.

Когда дело доходит до следующей строки (первая, которая использует JODA BTW), отладка останавливается:

DateTime newDate = new DateTime(2012, 5, 3, 12, 0, 0); 

И возвращает следующую трассировку стека:

 05-03 19:09:14.349: E/AndroidRuntime(4071): java.lang.NoClassDefFoundError: org.joda.time.DateTime 05-03 19:09:14.349: E/AndroidRuntime(4071): at it.paganel.droidMessageExport.Control.TimePickerControl.SetTimePart(TimePickerControl.java:83) 05-03 19:09:14.349: E/AndroidRuntime(4071): at it.paganel.droidMessageExport.Control.TimePickerControl.onClick(TimePickerControl.java:116) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.view.View.performClick(View.java:2454) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.view.View$PerformClick.run(View.java:9030) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Handler.handleCallback(Handler.java:587) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Handler.dispatchMessage(Handler.java:92) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.os.Looper.loop(Looper.java:123) 05-03 19:09:14.349: E/AndroidRuntime(4071): at android.app.ActivityThread.main(ActivityThread.java:4641) 05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.reflect.Method.invokeNative(Native Method) 05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.reflect.Method.invoke(Method.java:521) 05-03 19:09:14.349: E/AndroidRuntime(4071): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:870) 05-03 19:09:14.349: E/AndroidRuntime(4071): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 05-03 19:09:14.349: E/AndroidRuntime(4071): at dalvik.system.NativeStart.main(Native Method) 05-03 19:09:14.349: E/AndroidRuntime(4071): Caused by: java.lang.ClassNotFoundException: org.joda.time.DateTime in loader dalvik.system.PathClassLoader[/data/app/it.paganel.droidMessageExport-2.apk] 05-03 19:09:14.349: E/AndroidRuntime(4071): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 05-03 19:09:14.349: E/AndroidRuntime(4071): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 05-03 19:09:14.349: E/AndroidRuntime(4071): ... 13 more 

Кто-то может мне помочь? Заранее спасибо!

Переименуйте папку lib в lib. По сравнению с ADT Tools 17 внешние контейнеры попадают только в apk, если они находятся внутри этой папки. В качестве альтернативы вы можете перейти к «configure build path ..» -> «Order and Export» и установить флажок рядом с банкой.

Для других, кто может искать решение, есть еще одна возможная причина, которую я только что обнаружил: Открыть проект> Свойства> Путь сборки Java> Библиотеки и проверить, зависит ли JodaTime от зависимостей Android или частных библиотек Android . Затем убедитесь, что соответствующая опция отмечена на вкладке « Заказ и экспорт ». Мне пришлось проверять частные библиотеки Android (где был указан JodaTime), чтобы заставить его работать.

Я предполагаю, что это относится и к аналогичным вопросам, и не обязательно связано с JodaTime.