Не удалось устранить ошибку суперкласса при обращении к библиотеке .jar - PullRequest
31 голосов
/ 29 мая 2011
  1. Я создал проект Android и запустил его.Это бежало успешно.
  2. Я разработал веб-сервис на Java и разместил его.Он успешно работал.
  3. Я экспортировал веб-сервис в .jar и добавил его в свой проект Android.
  4. При попытке вызвать метод в веб-сервисе я получаю ошибку 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;)

Ответы [ 8 ]

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

Эта проблема возникла только после обновления до ADT 17.

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

14 голосов
/ 07 июня 2013

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

4 голосов
/ 06 января 2012

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

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

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

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

Просто к вашему сведению, если кто-то придет посмотреть. Ура! * * 1005

2 голосов
/ 30 мая 2011

Вы используете затмение?Если да, добавили ли вы библиотеку в путь сборки, как описано в Добавление библиотеки / JAR в проект Eclipse Android ?

1 голос
/ 17 марта 2014

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

1 голос
/ 28 июня 2013

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

0 голосов
/ 11 августа 2012

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

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

...