在 Eclipse 中导入 Picasso 和 OkHttp

Posted

技术标签:

【中文标题】在 Eclipse 中导入 Picasso 和 OkHttp【英文标题】:Importing Picasso and OkHttp in Eclipse 【发布时间】:2015-06-18 03:29:18 【问题描述】:

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

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

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)

指定的类似乎在 jar 中,但 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 jar 中。我试图将它与 Picasso jar(最新 - 2.5.2)一起导入主项目,但我得到了同样的例外。我没有看到任何 OkHttp 警告,表明不兼容,如其他一些线程中所述。

【问题讨论】:

对我来说同样的例外,只有 libs 文件夹中的 jar。 您能否提供有关您案件的更多信息? 在我的项目的 libs 文件夹中使用 Eclipse Luna,带有 picasso-2.5.2 jar 和 okhttp-2.3.0 jar(我需要它来使用 OkHttpClient):我得到与你相同的错误。 如果你想使用 OkHttp,你需要 Okio。检查当前答案。 【参考方案1】:

OkHttp 需要Okio 才能工作。这在GitHub page 上提到,就在下载按钮的下方。导入 Okio jar 修复了 NoClassDefFoundError。这是我刚刚测试的工作配置: picasso:2.5.2; okhttp:2.3.0; okio:1.3.0.

【讨论】:

以上是关于在 Eclipse 中导入 Picasso 和 OkHttp的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用库的eclipse中导入android studio项目?

怎么在eclipse中导入gson和dom4

④---在Eclipse中导入GIT项目

IDEA中导入eclipse项目会受到.classpath和.project的影响

如何在Eclipse中导入Android App项目源代码?

在Eclipse中导入dtd和xsd文件,使XML自动提示 (转)