OkHTTP和毕加索不会一起运行

我在我的项目中使用Picasso库来加载图像和caching它们。 它工作正常,没有任何问题。 但是,当我尝试使用OkHttp库与我的服务器(JSON通信)执行数据通信时,毕加索抛出exception。

我使用下面的jar子: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; } 

上面的代码没有任何问题。 然而,使用毕加索图书馆和完美工作的代码,开始抛出以下的优点:

 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) 

我的class级path:

在这里输入图像说明

如果我删除okhttp-2.0.0-RC2,okio-1.0.0,毕加索线条工作。

为什么会这样呢? 我怎样才能一起使用两个库?

Solutions Collecting From Web of "OkHTTP和毕加索不会一起运行"

这个组合适用于我:

 compile 'com.squareup.okhttp:okhttp:2.2.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' compile 'com.squareup.picasso:picasso:2.4.0' 

切换到毕加索2.3.2。 你还需要okhttp-urlconnection-2.0.0-RC2。

 //Below code for Picasso initializing once for the app private Picasso picasso; private OkHttpClient okHttpClient; okHttpClient = new OkHttpClient(); picasso = new Picasso.Builder(this) .downloader(new OkHttpDownloader(okHttpClient)) .build(); //Below code to retrieve the images whereever required on the app picasso.with(context).load(imageUrl).placeholder(R.drawable.ic_launcher) 

上面的代码适合我。

毕加索使用3包。

  1. Square.OkHttp
  2. Square.OkIO
  3. Square.Picasso

由于使用了OkHttp库和Picasso库,您希望添加OkHttp和OkIO包的两倍。

这2个软件包都包含在Picasso中,您不需要在您的项目中包含OkHttp库。

试试这些:

 compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp3:okhttp:3.0.1' 

如果您使用的是Eclipse IDE,请在项目属性 – > java build path-> order and export(最后一个选项卡)中选中picasso库

我有同样的错误。 它为我工作,希望它有帮助。 在这里输入图像说明