2015-04-12 2 views
1

Мне нужно предоставить некоторые ресурсы Пикассо, чтобы удовлетворить довольно странный запрос. Для этого мне нужно импортировать Picasso в качестве проекта библиотеки вместо скомпилированной банки. Я создал новый проект Android и скопировал содержимое picasso \ picasso \ src \ main \ java (клонированный мастер) в папку src. Picasso использует OkHttp, поэтому я загрузил последнюю версию jar (2.3.0) и поместил ее в папку libs проекта Picasso; добавили его в путь сборки; выбрал банку в настройках пути «Заказ и экспорт». Наконец, я сделал проект Picasso библиотекой и включил ее в основной проект (также удалил старую банку Picasso из libs).Импорт Picasso и OkHttp в Eclipse

Первый раз, когда приложение пытается сделать запрос Пикассо я получаю следующее исключение:

04-12 17:04:15.956: E/AndroidRuntime(5436): java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.DiskLruCache$4 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.okhttp.internal.DiskLruCache.<clinit>(DiskLruCache.java:810) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.okhttp.Cache.<init>(Cache.java:168) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:77) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:55) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:45) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:424) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:250) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.Picasso$Builder.build(Picasso.java:832) 
04-12 17:04:15.956: E/AndroidRuntime(5436):  at com.squareup.picasso.Picasso.with(Picasso.java:662) 

Указанный класс, как представляется, в банке, но DiskLruCache.java кажется сломанным в общей сложности 9 файлов классов :

$ ls DiskLruCache* 
DiskLruCache$1.class DiskLruCache$4.class   DiskLruCache$Entry.class 
DiskLruCache$2.class DiskLruCache$Editor$1.class DiskLruCache$Snapshot.class 
DiskLruCache$3.class DiskLruCache$Editor.class DiskLruCache.class 

Я готов предоставить дополнительную информацию. Любые советы будут высоко оценены.

Edit:

Проблема, кажется, в OkHttp банке. Я попытался импортировать его в основной проект вместе с банкой Пикассо (последняя версия - 2.5.2), и я получаю то же исключение. Я не вижу никаких предупреждений OkHttp, указывающих на несовместимость, как указано в некоторых других потоках.

+1

такое же исключение для меня, только с банкой в ​​папке libs. – GPack

+0

Можете ли вы предоставить дополнительную информацию о вашем случае? –

+0

Использование Eclipse Luna с пикассо-2.5.2 jar и okhttp-2.3.0 jar (мне нужно использовать OkHttpClient) в папке libs моего проекта: я получаю ту же идентичную ошибку, что и ваша. – GPack

ответ

7

OkHttp требуется Okio для работы. Это указано на GitHub page, прямо под кнопкой загрузки. Импорт банка Okio исправил NoClassDefFoundError. Вот рабочая конфигурация, которую я только что испытал: picasso:2.5.2; okhttp:2.3.0; okio:1.3.0.

Смежные вопросы