Обновил appcompat-v7 до последней версии, получил NoClassDefFound для AppCompatDelegateImplV23
Я прочитал в блоге CommonsWare, что до обновления Android 6.0 разумно обновить appcompat-v7 до последней версии, поэтому я просто попытался сделать это с моим проектом в Eclipse. После обновления библиотеки (я просто удалил предыдущую версию и добавил новую с ресурсами), моя (ранее ActionBarActivity) AppCompatActivity не запускалась (приложение вылетало). Это содержание LogCat:
08-20 02:55:58.417: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV7>
08-20 02:55:58.418: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV7>
08-20 02:55:58.419: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV11>
08-20 02:55:58.419: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV11>
08-20 02:55:58.419: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV14>
08-20 02:55:58.420: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV14>
08-20 02:55:58.420: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV23>
08-20 02:55:58.420: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV23>
08-20 02:55:58.421: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV14>
08-20 02:55:58.421: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV11>
08-20 02:55:58.421: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV7>
08-20 02:55:58.421: I/art(28031): Rejecting re-init on previously-failed class java.lang.Class<android.support.v7.app.AppCompatDelegateImplV23>
08-20 02:55:58.421: D/AndroidRuntime(28031): Shutting down VM
08-20 02:55:58.422: E/AndroidRuntime(28031): FATAL EXCEPTION: main
08-20 02:55:58.422: E/AndroidRuntime(28031): Process: com.threeeplusplus.karkoona, PID: 28031
08-20 02:55:58.422: E/AndroidRuntime(28031): java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:133)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:117)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:456)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
08-20 02:55:58.422: E/AndroidRuntime(28031): at com.threeeplusplus.karkoona.activities.CentralNavActivity.onCreate(CentralNavActivity.java:154)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.Activity.performCreate(Activity.java:6237)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.ActivityThread.-wrap11(ActivityThread.java)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.os.Handler.dispatchMessage(Handler.java:102)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.os.Looper.loop(Looper.java:148)
08-20 02:55:58.422: E/AndroidRuntime(28031): at android.app.ActivityThread.main(ActivityThread.java:5417)
08-20 02:55:58.422: E/AndroidRuntime(28031): at java.lang.reflect.Method.invoke(Native Method)
08-20 02:55:58.422: E/AndroidRuntime(28031): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
08-20 02:55:58.422: E/AndroidRuntime(28031): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Я пытался исправить это в течение нескольких часов, но ничего не работает! Я очистил, повторно очистил, удалил библиотеку, повторно добавил, проверил файлы.jar на наличие файлов классов и, конечно же, там есть AppCompatDelegateImplV23 и т. Д. Ничего.
Есть идеи?
2 ответа
У меня была точно такая же ошибка, и я нашел следующее решение:
Закройте фактическое рабочее пространство с вашим проектом РАЗВИТИЯ
Создать новое рабочее пространство
- Создать новый проект Android TEST. Это автоматически создаст appcompat_v7 с последней обновленной версией Android.
- Перейдите в PATH рабочей области проекта DEVELOPMENT (не в Eclipse, каталог рабочей области)
- Удалить appcompat_v7
- Перейти к рабочей области проекта Android TEST PATH
- Скопируйте это appcompat_v7
- Вставьте в рабочую область вашего проекта РАЗРАБОТКА
- Теперь откройте Eclipse с рабочей областью вашего проекта РАЗВИТИЯ
ФИКСИРОВАННЫЙ
Перепробовав все, что я мог придумать, я в итоге удалил библиотеку из рабочей области, android-support-v4.jar и android-support-v7-appcompat.jar из папки /bin моего проекта, и я также пошел в Свойства -> Android и в разделе Библиотеки удалены android-support-v7-appcompat.
Я также удалил все, что связано с библиотекой поддержки, в Java Build Path -> Libraries и Java Build Path -> Order and Export.
Затем я повторно импортировал библиотеку, и ошибка исчезла. Приложение теперь работает, но библиотека appcompat v23 в некотором роде испорчена (например, Action Mode не перекрывает панель инструментов поддержки, теперь она появляется над ней - т.е. между строкой состояния и панелью инструментов)