КлассNotFoundException после перехода на ADT 18

Поскольку я обновил ADT до 19, я начал получать следующую ошибку. Проблема возникает, когда я запускаю свои приложения. Я проверил все предыдущие сообщения, связанные с этим, но, похоже, никто из них не помогает. любая идея была бы ВЕЧНО оценена...

Моя настройка

  • В настоящее время у меня есть ADT 18, SDK 19, elcipse в Windows 7 64bit.
  • Я использую проект библиотеки, который делает ashare.jar и все мои внешние банки (т.е. dropbox, commons codec) находятся в папке "libs" в проекте Library (Ashare).
  • Я не использую proguard.

Как мы видим эту проблему.

  • Создать apk в eclipse > {MyProject} > Щелкните правой кнопкой мыши > Инструменты Android > Экспорт подписанного пакета приложений
  • установите apk в эмуляторе или dev.phone с помощью "adb install XXX.apk"
  • Запустите приложение. Затем, BOOM. он выдает ошибку.

Некоторые заметные вещи

  • Это началось после того, как я обновил ADT в своем затмении до версии 18.
  • Это происходит только тогда, когда я делаю подписанный apk и запускаю его в эмуляторе или dev.phone.
  • Я не вижу проблемы, если я запускаю свое приложение с помощью {MyProject} > Щелкните правой кнопкой мыши > Запустить как > Приложение для Android
  • Когда я проверил внутри classes.dex, я вижу, что там не хватает классов. Я не уверен, но я чувствую, что процесс сборки не включает все классы в classes.dex
  • Во время экспорта нет ошибки в консоли eclipse (я использую подробный вариант в настройках Android > Build > Build output)

Исключение Java

05-07 08:52:48.336: D/AndroidRuntime(3055): Shutting down VM
05-07 08:52:48.336: W/dalvikvm(3055): threadid=1: thread exiting with uncaught exception (group=0x40a3e1f8)
05-07 08:52:48.340: E/AndroidRuntime(3055): FATAL EXCEPTION: main
05-07 08:52:48.340: E/AndroidRuntime(3055): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.acj0.barcodeexpdemo/com.acj0.barcodeexpdemo.Launcher}: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.os.Looper.loop(Looper.java:137)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.main(ActivityThread.java:4424)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.reflect.Method.invokeNative(Native Method)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.reflect.Method.invoke(Method.java:511)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at dalvik.system.NativeStart.main(Native Method)
05-07 08:52:48.340: E/AndroidRuntime(3055): Caused by: java.lang.ClassNotFoundException: com.acj0.barcodeexpdemo.Launcher
05-07 08:52:48.340: E/AndroidRuntime(3055):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
05-07 08:52:48.340: E/AndroidRuntime(3055):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
05-07 08:52:48.340: E/AndroidRuntime(3055):     ... 11 more

ОБНОВЛЕНИЕ 5/7/2012

  • Все мои банки находятся в папке "libs" проекта Library, и я вижу, что все они включены в "Android Dependencies"

ОБНОВЛЕНИЕ 5/18/2012 - ВРЕМЕННОЕ РЕШЕНИЕ

  • Я нашел временное решение. Перед запуском "Экспорт подписанного пакета приложений" я установил параметр "Очистить" БЕЗ "сборки автоматически". Тогда я больше не вижу ошибки. Я не знаю, почему это работает. Если у вас есть какие-либо идеи, сообщите мне.

Ответ 1

Поместите свои внешние контейнеры в каталог libs. Вы можете взглянуть на эту ссылку

Ответ 2

У меня была та же проблема, хотя я сделал все, как описано в ссылка lujop, упомянутая. Вот что не хватает:

  • Щелкните правой кнопкой мыши на своем проекте > Путь сборки > Настроить путь сборки...
  • Перейдите на вкладку "Заказ и экспорт"
  • Установите флажки рядом с библиотеками (Android x.x.x, Android Dependencies) и другими проектами, которые вы ссылаетесь на
  • Очистите проект
  • Это должно быть

Я надеюсь, что это поможет!

Ответ 3

У меня тоже было это. Вот мое исправление. Как здесь: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

Сделайте там "Реферированные библиотеки". Если есть все, щелкните их правой кнопкой мыши и удалите из пути сборки. Теперь папка должна исчезнуть, и вам остается оставить "Android Dependencies"

Ответ 4

Это заставило меня сходить с ума так же, как целый день, только чтобы понять глупое имя приложения в манифесте было неправильным. Для имени приложения у меня было: Android: name= "com.diack.locdatafeeds"

мне не хватало моей основной деятельности Android: name= "com.diack.locdatafeeds.Mainactivity"

Надеюсь, что это поможет кому-то