【发布时间】:2014-08-02 11:58:19
【问题描述】:
我在我的项目中使用 Picasso 库来加载图像并缓存它们。它运行良好,没有任何问题。但是,当我尝试使用 OkHttp 库与我的服务器进行数据通信(JSON 通信)时,Picasso 会抛出异常。
我使用以下罐子:okhttp-2.0.0-RC2、okio-1.0.0、picasso-2.2.0。当我添加这些 jar 后运行我的项目时,它会崩溃并显示以下内容:
06-12 11:13:15.824: E/dalvikvm(12105): Could not find class 'com.squareup.okhttp.HttpResponseCache', referenced from method com.squareup.picasso.OkHttpDownloader.<init>
我添加了 okhttp 只是为了使用以下方法:
public static String executeHttpGet(String urlStr) {
Response response = null;
String result = "";
OkHttpClient client = new OkHttpClient();
try {
Request request = new Request.Builder().url(urlStr).build();
response = client.newCall(request).execute();
result = response.body().string();
} catch (Exception ex) {
}
return result;
}
上面的代码没有任何问题。然而,使用 Picasso 库并且曾经完美运行的代码开始抛出以下异常:
06-12 11:19:49.307: E/AndroidRuntime(13036): FATAL EXCEPTION: main
06-12 11:19:49.307: E/AndroidRuntime(13036): java.lang.NoClassDefFoundError: com.squareup.okhttp.HttpResponseCache
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:74)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:51)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:41)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:319)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:171)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Picasso$Builder.build(Picasso.java:490)
06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Picasso.with(Picasso.java:390)
我的班级路径:
如果我删除 okhttp-2.0.0-RC2、okio-1.0.0、Picasso 线条就可以了。
为什么会这样?如何同时使用两个库?
【问题讨论】:
-
你是如何构建的?你用IDE吗?是工作室还是 ADT?
-
我使用 Eclipse Android 开发工具。我添加了构建路径的屏幕截图
-
我认为问题需要在构建路径中。显然,毕加索中捆绑了一个 okhttp 版本。此版本可能包含需要使用的类,但是您在 picasso 之前将单独的 okhttp jar 加载到类路径中,它会覆盖捆绑的库。尝试更改类路径中库文件的顺序(手动编辑.classpath文件)