Gson NoClassDefFoundError после обновления ADT и SDK Tools до v17
Сегодня я обновил свои инструменты ADT и SDK до v17 и мои проекты, используя
Библиотека gons jar Google начала бросать NoClassDefFoundError.
Здесь вывод logcat:
> 03-22 12:30:58.941: E/AndroidRuntime(21672): FATAL EXCEPTION: main
> 03-22 12:30:58.941: E/AndroidRuntime(21672):
> java.lang.NoClassDefFoundError: com.google.gson.Gson 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.conn.XRequestHandler.connect(XRequestHandler.java:35)
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.conn.XRequestHandler.makeRequest(XRequestHandler.java:
> 29) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.bavul.XBaseWithConnectionActivity.makeRequest(XBaseWithConnectionActivity.java:
> 46) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> com.matriksdata.ui.login.SplashScreenActivity.onCreate(SplashScreenActivity.java:
> 36) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.Activity.performCreate(Activity.java:4465) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
> 1049) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> 1919) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
> 1980) 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.ActivityThread.access$600(ActivityThread.java:122) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
> 03-22 12:30:58.941: E/AndroidRuntime(21672): at
> android.os.Handler.dispatchMessage(Handler.java:99) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> android.os.Looper.loop(Looper.java:137) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at
> android.app.ActivityThread.main(ActivityThread.java:4340) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> java.lang.reflect.Method.invokeNative(Native Method) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> java.lang.reflect.Method.invoke(Method.java:511) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at com.android.internal.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 12:30:58.941:
> E/AndroidRuntime(21672): at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22
> 12:30:58.941: E/AndroidRuntime(21672): at
> dalvik.system.NativeStart.main(Native Method)
любые идеи?
Ответы
Ответ 1
Сегодня я столкнулся с аналогичной проблемой.
Это исправлено для меня:
- Удалите все проекты библиотеки Android и внешние банки из пути сборки.
- Создайте в своем проекте папку с именем libs.
- Поместите все внешние .jars в эту папку, ADT теперь должен поместить их под "Android Dependencies".
- Повторно импортируйте все предыдущие проекты в Android-библиотеке, обычным способом.
Проблема заключается в том, что внешние банки не помещаются в папку "libs" по умолчанию при использовании свойств - Java Build Path - Add External Jar, вместо этого они помещаются в "Связанные библиотеки" вместо "Android Dependencies", и это вызывает NoClassDefFoundError.
Пожалуйста, просмотрите Работа с зависимостями в проектах Android для более подробной информации.
Ответ 2
- Щелкните правой кнопкой мыши проект и выберите "Свойства"
- Перейдите в Java Build Path-Order и Export.
- Отметьте "Частные библиотеки Android"
- Нажмите "Проект", "Очистить"
Ответ 3
Для SDK Tools 17 вам нужно переименовать папку проекта библиотеки из "lib" в "libs", как предложено здесь.
Также посмотрите this.
Ответ 4
У этого сайта есть самое простое решение, которое сработало для меня, установите флажок в библиотеке в разделе "Заказ и экспорт".
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
Ответ 5
Я создал в своем блоге сообщение о том, как исправить эти проблемы. Это связано с библиотеками и изменениями, которые они сделали в отношении того, как Eclipse управляет библиотеками сейчас. Вы можете проверить его здесь, если хотите: http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/
Ответ 6
Проверить порядок и выбрать
Project->Properties->Java build path->Order and Export:
Закажите и выберите:
select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen
И в библиотеках вкладок:
Зависимости Частные библиотеки (jars в каталоге 'libs') Другие
Работал для меня!
Ответ 7
Проверьте свою библиотеку gson в пути сборки. возможно, gson libraty не являются доступными.
Ответ 8
Это официальная ссылка, предоставленная Android Devs в Google.
Пройдите статью, если вы столкнулись с NoClassDefFoundException после
обновление плагина и/или SDK
https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4
Ответ 9
загрузите банку GSON и сделайте как путь класса
Ответ 10
Я использую GSON в проекте библиотеки, поэтому, чтобы решить эту проблему, помимо добавления бара GSON на пути сборки, мне нужно было объявить его в манифесте проекта библиотеки, как показано ниже:
<uses-library android:name="com.google.gson" />