ClassNotFoundException для AndroidAnnotations сгенерированных классов с момента обновления до ADT 22

Этот проект работал чудесами перед обновлением до ADT22. Я уже потерял день из-за того, что не знал, что мне нужно загрузить инструменты сборки, и я боюсь, что из-за этого я потеряю еще один.

Когда я пытаюсь создать тот же код, который работал два дня назад, я получаю это исключение:

com.cidaut.blueparking fatal error : Unable to instantiate activity \
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
    java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk
java.lang.RuntimeException: Unable to instantiate activity \
    ComponentInfo{com.cidaut.blueparking/com.cidaut.blueparking.SplashScreen_}: \
    java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk

  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
  at android.app.ActivityThread.access$600(ActivityThread.java:141)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:5041)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.ClassNotFoundException: \
    Didn't find class "com.cidaut.blueparking.SplashScreen_" on path: \
    /data/app/com.cidaut.blueparking-1.apk
  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
  ... 11 more

Я нахожу странным, что он пытается найти класс в файле APK, но что угодно. Есть ли какое-либо решение для этого?

Кстати, мой путь к классам включает исходную папку, в которой AndroidAnnotations генерирует код, так что не проблема.

Здесь мое окно "Заказ и экспорт"

Eclipse / Order and Export

Журнал ошибок генерации журнала AndroidAnnotations

AndroidAnnotations class generation error log

EDIT: теперь он работает

Следующей процедурой я придерживался:

  • Очистите и перестройте все.
  • Отметьте все на вкладке "Заказ и экспорт" проекта каждый (как основной проект, так и библиотеки)
  • Очистите и перестройте все снова

Теперь он работает. Я не могу поверить, что потерял почти 12 часов из-за этого...

Ответ 1

Перейдите на вкладку "Заказ и экспорт" в разделе "Настройка пути сборки" и установите флажок рядом со всеми необходимыми библиотеками.

Ответ 2

Вот решение:

  • В Eclipse щелкните правой кнопкой мыши имя проекта и выберите "Свойства"

  • Выберите вкладку "Заказ и экспорт", затем убедитесь, что заблокированы личные библиотеки Android.

  • Очистите свой проект, выбрав Project → Clean

Это должно работать

Ответ 3

У меня была такая же проблема, и для меня это было связано с опцией "Разрешить выходную папку для исходной папки" в проекте "путь сборки Java". Я снял флажок и снова проверил, и проблема исчезла. По какой-либо причине используемый путь отличается от стандартного. Возможно, это связано с m2e android.

Ответ 4

У меня была аналогичная проблема - оказалось, что несоответствие JAR библиотеки поддержки, включенной в проект ссылок, вызывало проблему. Убедившись, что каждый проект использовал ту же версию библиотеки поддержки, он исправил ее для меня.

Ответ 5

Попадая сюда с ответом, если кто-то столкнется с этой проблемой в будущем. Я добавил ActionBarCompat в мое приложение, которое использовало AndroidAnnotations и имело эту же проблему. Оказывается, что все библиотеки, которые используются конкретным приложением, должны жить в родительском приложении. Таким образом, несмотря на то, что ABC была проектом библиотеки в Eclipse и скомпилированным кодом, мне все еще нужно было включать ABC в качестве библиотеки в моем приложении.