Gson NoClassDefFoundError после обновления ADT и SDK Tools до версии 17 - PullRequest
43 голосов
/ 22 марта 2012

Сегодня я обновил инструменты ADT и SDK до версии 17, и мои проекты, использующие библиотеку gson 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)

есть идеи?

Ответы [ 10 ]

77 голосов
/ 22 марта 2012

Я столкнулся с подобной проблемой сегодня.

Это исправило это для меня:

  • Удалите все проекты библиотеки Android и внешние файлы jar из пути сборки.
  • Создайте папку с именем 'libs' в вашем проекте.
  • Поместите все внешние файлы .jar в эту папку, ADT теперь должен поместить их в «Зависимости Android».
  • Повторно импортируйте все ваши предыдущие проекты библиотеки Android обычным способом.

Проблема заключается в том, что внешние файлы jar не помещаются в папку «libs» по умолчанию при использовании «Свойства» - «Путь сборки Java» - «Добавить внешний файл Jar», вместо этого они помещаются в «Библиотеки ссылок» вместо «Зависимости Android», и это вызывает NoClassDefFoundError.

Пожалуйста, проверьте Работа с зависимостями в проектах Android для получения более подробной информации.

13 голосов
/ 13 июня 2013
  1. Щелкните правой кнопкой мыши проект и выберите Свойства
  2. Перейти к Java Build Path-Order и экспортировать.
  3. Отметьте «Частные библиотеки Android»
  4. Нажмите Project, Clean
10 голосов
/ 22 марта 2012

Для SDK Tools 17 вам нужно переименовать папку вашего библиотечного проекта из «lib» в «libs», как предложено здесь .Также взгляните на это .

5 голосов
/ 23 марта 2012

Этот сайт имеет самое простое решение, которое мне помогло, установите флажок библиотеки в разделе «Заказ и экспорт».

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

2 голосов
/ 17 мая 2013

Проверить заказ и выбрать в

Project->Properties->Java build path->Order and Export:

Заказать и выбрать:

select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen

А во вкладке библиотеки:

Зависимость Частные библиотеки (jar в каталоге 'libs') Другие

Работал на меня!

2 голосов
/ 22 марта 2012

Я написал в своем блоге быстрое сообщение, объясняющее, как решить эти проблемы. Это связано с библиотеками и внесенными ими изменениями в то, как Eclipse теперь управляет библиотеками. Вы можете проверить это здесь, если хотите: http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/

0 голосов
/ 19 августа 2013

Я использую GSON в проекте библиотеки, поэтому для решения этой проблемы, помимо добавления JAR-файла GSON в путь сборки, мне нужно было объявить его в манифесте проекта библиотеки, как показано ниже:

<uses-library android:name="com.google.gson" />
0 голосов
/ 11 апреля 2012

скачайте банку GSON и сделайте путь к классу

0 голосов
/ 23 марта 2012

Это официальная ссылка, предоставленная разработчиками Android на Google.Просмотрите статью, если вы столкнулись с NoClassDefFoundException после обновления плагина и / или SDK

https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4

0 голосов
/ 22 марта 2012

Проверьте вашу библиотеку gson в пути сборки. может быть, gson libraty не доступны.

...