我需要公開一些畢加索資源來滿足一個相當奇怪的請求。爲此,我需要將Picasso作爲庫項目導入,而不是編譯好的jar。我創建了一個新的Android項目,並將picasso \ picasso \ src \ main \ java(克隆的主文件)的內容複製到src文件夾中。畢加索使用OkHttp,因此我下載了最新版本的jar(2.3.0)並將其放入畢加索項目的libs文件夾中;將其添加到構建路徑;選擇構建路徑「訂單和導出」首選項中的jar。最後,我讓畢加索項目成爲一個圖書館,並將其納入主項目中(也從庫中移除了舊畢加索罐子)。在Eclipse中導入畢加索和OkHttp
第一次應用程序試圖做一個畢加索的請求,我得到以下異常:
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
我準備好提供其他信息。任何建議將不勝感激。
編輯:
這個問題似乎是在OkHttp罐子。我試圖將它與Picasso jar(最新版本 - 2.5.2)一起導入到主項目中,我也遇到了相同的異常。我沒有看到任何OkHttp警告,表示在其他一些線程中聲明的不兼容性。
同樣的例外,只有在libs文件夾中的jar。 – GPack
你能提供關於你的案例的其他信息嗎? –
在我的項目的libs文件夾中使用Eclipse Luna和picasso-2.5.2 jar和okhttp-2.3.0 jar(我需要它使用OkHttpClient):我得到和你一樣的相同錯誤。 – GPack