Android - невозможно разрешить суперкласс

17

Я выкопал старый проект андроида, над которым я работал несколько лет назад, и загрузил его в новую установку eclipse (последняя ADT и т. д.).

Проект все компилируется в порядке (после некоторой незначительной настройки), и приложение начинает нормально, однако, когда я нажимаю кнопку, чтобы начать основное действие, я получаю следующую трассировку стека:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.tmm.android.activities.GameActivity
    at com.tmm.android.activities.StartActivity.onClick(StartActivity.java:53)
    at android.view.View.performClick(View.java:2408)

Теперь рассматриваемый класс (GameActivity) является одним из моих классов, который находится в приложении, поэтому я знаю, что это не проблема, но я заметил предупреждение в верхней части логарифма:

Unable to resolve superclass of Lcom/tmm/android/activities/GameActivity; (33)
Link of class 'Lcom/tmm/android/activities/GameActivity;' failed

Мой класс GameActivity расширяет еще один класс, который является частью стороннего jar, который я включил в проект (включил его в каталог «libs» и добавил его в путь сборки проекта в eclipse).

Может ли кто-нибудь сообщить, что я мог сделать неправильно, или что-то, что изменилось в ADT / etc, что мне может потребоваться принять во внимание (он отлично работал, когда я последний раз его использовал в Eclipse).

Приветствия     

задан rhinds 04.09.2012 в 21:56
источник
  • Похоже, что существует зависимость, на которую полагается суперкласс, который не установлен. –  Android Addict 04.09.2012 в 22:00
  • , что перешло мне в голову, но это тот же самый баннер, который я использовал в прошлый раз, когда я запустил приложение, поэтому кажется странным, что все будет по-другому - если не будут изменены библиотеки андроидов? Есть ли простой способ отладки, что именно отсутствует? –  rhinds 04.09.2012 в 22:06

3 ответа

10

Хорошо, это была простая проблема в конце.

Добавив стороннюю библиотеку к пути сборки, вкладка экспорта не была дефолтом для экспорта jar (нормальное поведение eclipse) - поэтому банка не включалась в развертывание.

прошло мимо этой проблемы.

    
ответ дан rhinds 04.09.2012 в 22:23
источник
  • Отлично, решите свои проблемы, спасибо! –  Sean 03.02.2013 в 16:39
  • Я должен был также разместить стороннюю библиотеку в верхней части моего списка экспорта –  Kcvin 19.06.2013 в 20:02
29

У меня была та же проблема. У меня был пользовательский класс View, который вызывал методы в импортированной библиотеке. Я также получал ошибку «Не удалось разрешить суперкласс», когда приложение пыталось создать мое представление (при попытке раздуть макет, который ссылался на этот пользовательский вид).

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

(Как и при написании, я использую Eclipse Android Tools R21).

Если вы используете внешнюю банку

  • Скопируйте его в папку «libs» вашего проекта. Средства Android должны делать все остальное.

Если библиотека, которую вы хотите использовать, представляет собой отдельный проект в вашей рабочей области.

  • В вашем проекте библиотеки: перейдите в «Свойства» и «Android» и установите флажок «Является ли библиотека».
  • В вашем проекте приложения: перейдите в «Свойства» и «Android» и добавьте проект библиотеки в том же разделе (нажмите «Добавить ..»). Не проверяйте здесь «Библиотека»!

Некоторые ответы на этот вопрос говорят, что вам нужно перейти в Properties- & gt; Java Build Path- & gt; Projects и добавить туда проект библиотеки. Для нормальных Java-проектов вы это сделаете, но, похоже, Android Tools не нужны или не используют это.

Наконец, вы, вероятно, захотите убедиться, что lib включен в экспортированное приложение

  • Перейдите в меню «Свойства» и «Построить путь Java» и «Экспорт» и убедитесь, что библиотека проверена.
ответ дан Paul LeBeau 30.01.2013 в 17:58
источник
  • OMG МИЛЛИОН ОБНОВЛЯЕТ ВАМ SIR !!! Добавить библиотеку ... * facepalm. Обычный проект Add не работает по какой-то странной причине. –  Eric 01.05.2013 в 01:58
  • Наиболее важной частью является «Перейти к свойствам»> «Путь сборки Java» -> «Заказ и экспорт» и убедитесь, что библиотека проверена. Раньше это не требовалось, кажется, из Инструментов R21 или R22 и далее его необходимо –  Yasitha Chinthaka 22.05.2013 в 08:06
  • Спасибо. Запуск в раздражающую ошибку, которая стоила мне 10 часов работы: поддержка библиотеки была указана из другого проекта, во время компиляции все было в порядке, но во время выполнения MainActivity не был найден (Mainactivity был расширен из класса в библиотеке поддержки). –  Indrek Kõue 19.02.2014 в 22:04
  • Спасибо за решение проблемы, с которой я боролся часами. Добавление проекта библиотеки через Свойства> Android> Библиотека> Добавить сделал трюк для меня –  Cat 04.06.2014 в 02:51
0

У меня была та же проблема, я пытался проверить частные библиотеки Android под заказ и экспорт, и это не сработало для меня. Итак, я заметил, что моя папка libs не была указана в пути Java Build Path, я просто добавил ее в библиотеки и это ...

    
ответ дан DenninDalke 27.06.2013 в 23:06
источник