Не удалось устранить ошибку суперкласса при обращении к библиотеке.jar

  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 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам