classdefnotfound ошибка в затмении (странно) - PullRequest
2 голосов
/ 09 июня 2011

Я получаю ошибку определения класса во время выполнения моего приложения для Android.Все работает хорошо, кроме этого одного класса.Ранее этот класс работал.Класс на самом деле находится во внешней библиотеке, и все библиотеки являются правильными.Кто-нибудь сталкивался с чем-то подобным в затмении?Я чувствую, что это проблема среды.

Класс находится в клиентской библиотеке google api версии 1.4.1.

classdefnotfound: com.google.api.client.xml.XmlNamespaceDictionary;

Файл jar находится в каталоге lib и в файле .classpath.

Ответы [ 4 ]

2 голосов
/ 24 мая 2012

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

2 голосов
/ 09 июня 2011

если этот класс является действием, то обязательно добавьте его в файл AndroidManifest.xml!

0 голосов
/ 10 июня 2011

Хорошо, я понял это (после 8 часов стягивания волос!). Файлы jar lib клиента google были расположены в другом проекте (тот, который работал). Я добавил их в проект в качестве библиотеки ссылок. По некоторым причинам это не было добавлено во время компиляции. Решение: скопировал фактические файлы jar в каталог / lib и обновил путь сборки в eclipse, удалив ссылочные библиотеки

0 голосов
/ 09 июня 2011

Иногда это происходит, когда вы экспортируете свой проект и используете обфускацию.Proguard удалит классы, которые упоминаются только в manifest.xml и не используются непосредственно в вашем коде (например, загрузка классов для самоанализа).

В этом случае вы должны настроить proguard для сохранения вашего класса, посмотрите proguard.cfg и добавьте строку для вашего класса.

Кроме того, если это происходит в режиме отладки, а не дляв экспортируемом приложении, вы можете разархивировать файл apk, использовать dexdump, чтобы увидеть, включен ли ваш класс в файл dex.

dexdump поставляется с android sdk и может использоваться для декомпиляции classes.dex в вашем файле.apk.

С уважением,
Стефан

...