Невозможно разрешить ошибку суперкласса при ссылке на библиотеку .jar.

  • Я сделал проект Android и запустил его. Он прошел успешно.
  • Я разработал веб-сервис на Java и разместил его. Он успешно работал.
  • Я экспортировал webservice в .jar и добавил его в свой проект Android.
  • Когда я пытаюсь вызвать метод в веб-службе, я получаю ошибку Unable to resolve superclass.

Мой журнал ошибок:

Unable to resolve superclass of Lweb/service/RandomWordGeneratorService; (73)
Link of class 'Lweb/service/RandomWordGeneratorService;' failed 
Could not find class 'web.service.RandomWordGeneratorService',
    referenced from method tam.miru.Login$1.onClick
VFY: unable to resolve new-instance 110 Lweb/service/RandomWordGeneratorService;)
    in Ltam/miru/Login$1; 
VFY: replacing opcode 0x22 at 0x005a    
VFY: dead code 0x005c-006e in Ltam/miru/Login$1;.onClick (Landroid/view/View;)

Ответ 1

Только что начал эту проблему после обновления до ADT 17.

Обнаружено, что внешние .jar файлы должны находиться в папке 'libs' (с s), иначе их классы не будут включены в созданный файл .dex. Перед обновлением все отлично работало с моими .jar файлами в папке "lib" (нет).

Ответ 2

В моем случае мне пришлось перейти на Properties->Java Build Path->Order and Export и проверить Android Private Libraries, а затем очистить проект и работать нормально.

Ответ 3

Создать папку lib, папка libs предназначена для собственных библиотек. Я сделал это, добавляю библиотеку в lib и создаю путь как внутреннюю библиотеку, и она работает!

Ответ 5

Я знаю, что это сообщение в действительно старом потоке, но после того, как я прочитал ответ от @rabidgremlin, я проверил структуру папок и обнаружил, что он уже находится в "libs". Однако, увидев support.jar, я подумал, что использование этого было тем, что вызывало проблему.

Я расширил "FragmentActivity", но, оказывается, это ссылалось на support.jar, у которого были проблемы сами по себе. Как только я удалил предложение extends, приложение чудесным образом прекратило сбой.

Просто FYI на случай, если кто-то придет посмотреть. Ура!

Ответ 6

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

Ответ 7

У меня было такое же сообщение об ошибке. Потребовалось некоторое время, чтобы разобраться с проблемой: для Android требуется Java 1.6. И суперкласс моего действия реализовал интерфейс из Java-проекта с Java 1.7 в качестве компилятора. Этого было достаточно, если разработчик dex не смог связать суперкласс, и это привело к исключению класса, которое не было найдено.

Ответ 8

Я столкнулся с другой причиной этой ошибки в Eclipse. Я экспериментировал с помещением рабочих областей eclipse в каталоги дисков Google и обнаружил, что некоторые суперклассы не могут быть разрешены из действий android.

Приостановил привод Google, и все стало нормально работать. В моем случае суперкласс, который не загружался, был из класса, генерируемого буферами протокола. Этот класс и все остальные, которые я тестировал, отлично работали в не-андроидных Java-программах, даже несмотря на то, что был запущен привод Google.