Невозможно разрешить ошибку суперкласса при ссылке на библиотеку .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 и создаю путь как внутреннюю библиотеку, и она работает!
Ответ 4
Используете ли вы eclipse? Если да, добавили ли вы библиотеку в путь сборки, как описано в Добавление библиотеки /JAR в проект Android Eclipse?
Ответ 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.