在 Eclipse 中导入 Picasso 和 OkHttp

Importing Picasso and OkHttp in Eclipse

我需要公开一些 Picasso 资源以满足一个相当奇怪的请求。为此,我需要将 Picasso 作为库项目而不是已编译的 jar 导入。我创建了一个新的 Android 项目并将 picasso\picasso\src\main\java(克隆的主文件)的内容复制到 src 文件夹。 Picasso 使用 OkHttp,所以我下载了最新版本的 jar (2.3.0) 并将其放在 Picasso 项目的 libs 文件夹中;将其添加到构建路径;在构建路径 "Order and Export" 首选项中选择了 jar。最后,我将 Picasso 项目作为一个库并将其包含在主项目中(同时从 libs 中删除了旧的 Picasso jar)。

应用程序第一次尝试发出 Picasso 请求时出现以下异常:

04-12 17:04:15.956: E/AndroidRuntime(5436): java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.DiskLruCache
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)

指定的 class 似乎在 jar 中,但 DiskLruCache.java 似乎分为总共 9 个 class 文件:

$ ls DiskLruCache*
DiskLruCache.class  DiskLruCache.class         DiskLruCache$Entry.class
DiskLruCache.class  DiskLruCache$Editor.class  DiskLruCache$Snapshot.class
DiskLruCache.class  DiskLruCache$Editor.class    DiskLruCache.class

我准备提供更多信息。任何建议将不胜感激。

编辑:

问题似乎出在 OkHttp jar 中。我试图将它与 Picasso jar(最新 - 2.5.2)一起导入到主项目中,但我遇到了同样的异常。我没有看到任何 OkHttp 警告,表明不兼容,如其他一些线程中所述。

OkHttp 需要 Okio to work. This is mentioned on the GitHub page,就在下载按钮下方。导入 Okio jar 修复了 NoClassDefFoundError。这是我刚刚测试的工作配置: picasso:2.5.2; okhttp:2.3.0; okio:1.3.0.