2012-03-22 3 views
43

Сегодня я обновил свои инструменты ADT и SDK до v17 и мои проекты, используя . Библиотека gson jar Google начала бросать NoClassDefFoundError. Вот вывод LogCat:Gson NoClassDefFoundError после обновления ADT и SDK Tools до v17

> 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) 

какие-либо идеи?

+0

Вы пытались очистить проект от затмения? – DNRN

ответ

77

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

Это фиксированное для меня:

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

Вопрос заключается в том, что внешние банки не помещаются в папку «Libs» по умолчанию при использовании Properties - Java Build Path- Добавление внешнего Jar, вместо этого они помещаются под «Ссылочные Библиотеки» вместо «Android зависимостями» и это вызывает NoClassDefFoundError.

Для получения более подробной информации, пожалуйста, проверьте Dealing with dependencies in Android projects.

+0

Не могли бы вы расширить свое сообщение, объяснив, как вы связываете ** источники ** и ** javadoc ** с этой конфигурацией? – JJD

+0

В комментариях к этой проблеме сообщалось несколько «практических» исправлений источников и javadocs: [Ссылка] (http://code.google.com/p/android/issues/detail?id=27490) – Freddroid

+0

Nice ! Работает отлично! Спасибо @Freddman. –

0

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

10

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

2

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

5

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

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

+2

это исправлено для меня, но вместо «очистки» проекта мне пришлось перезапустить eclipse. – CQM

+0

@CQM, спасибо за комментарий, для меня перезапуск Eclipse также работал, а очистка проекта - нет. – GChorn

0

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

2

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

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

ордена и выберите:

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

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

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

работал для меня!

13
  1. правой кнопкой мыши проект и выберите Свойства
  2. Перейти к Java Build Path-заказа и экспорта.
  3. Нажмите Project
  4. Tick «андроид частных библиотек», Clean
+0

Это помогло мне и сэкономило много часов –

+0

Спасибо, это было единственное, что помогло мне – clearwater

0

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

<uses-library android:name="com.google.gson" /> 

 Смежные вопросы

  • Нет связанных вопросов^_^