Okhttp NoClassDefFoundError
Я использую jar OkHttp 2.0.0 в моем приложении для Android на затмение. Так как OkHttp теперь зависит от библиотеки Okio, я также добавил в свой проект jar Okio 1.0.0. Проект компилируется нормально без ошибок компиляции, но когда я запускаю на своем устройстве Android, он дает мне это NoClassDefFoundError
все относящиеся к классам библиотеки OkHttp.
Я поместил все файлы jar в папку libs проекта и добавил их в путь сборки, а также попытался проверить их на вкладке "Экспорт и порядок", но все равно это не работает.
Я хотел знать, так как okhttp зависит от okio, просто добавление обоих jar-файлов будет работать нормально, или мне придется делать что-то другое.
Я также попробовал флягу залпа, и она работает все отлично без любой проблемы. Никто не мог помочь мне здесь, проблема вокруг в настоящее время 3-4 дня.
Обновление Я также попробовал android studio и добавил библиотеку okhttp в зависимость от сборки, но все еще не работает.
3 ответа
В OkHttp 2.0.0 уровень языка был обновлен до Java 7.
Смотрите журнал изменений здесь https://github.com/square/okhttp/blob/master/CHANGELOG.md
Для того, чтобы решить эту проблему, вам нужно обновить до Java 7.
Также на этом этапе вам также может потребоваться изменить целевой SDK на KitKat (API 19), а также обновить инструменты сборки и т. Д., Чтобы Android хорошо играл с Java 7.
РЕДАКТИРОВАТЬ: у меня была та же проблема, когда я обновился до okHttp 2.0.0 и построен с муравьем. Хотя сборка казалась успешной, я получил NoClassDefFoundError. Просматривая мои журналы сборки, у меня была целая куча тихих ошибок
Первый пришел из Javac
warning: com/squareup/okhttp/<classname>.class major version 51 is newer than 50, the highest major version supported by this compiler.
а второй от декс
[dx] trouble processing:
[dx] bad class file magic (cafebabe) or version (0033.0000)
[dx] ...while parsing com/squareup/okhttp/<classname>.class
[dx] ...while processing com/squareup/okhttp/<classname>.class
OkHttp v2.0 зависит от Okio v1.0. Вы можете скачать его банку здесь. Это сработало для меня
Идти к Project/Properties/Java Build Path/Order and Export
- Убедитесь, что есть проверка перед зависимостями Android и библиотекой поддержки, если вы ее используете. Отметьте все флажки и нажмите Применить и очистите проект.