Sarthakpandit
Sarthakpandit

Reputation: 111

android app crashes after applying code for offline image viewing via okhhtp ,picasso

I am creating a blog kind of app, which has blog title, description and image.The title and description synchronises offline perfectly via firebase .

But after applying for offline image view in my android app via okhttp through picasso in my android app (using firebase) the app crashes on first launch.The dependencies had been added in bulid.gradle file.

The code below, is pasted in my startactivity (it is a splash screen).

  FirebaseDatabase.getInstance().setPersistenceEnabled(true);

                Picasso.Builder builder = new Picasso.Builder(this);
                builder.downloader(new OkHttpDownloader(this,Integer.MAX_VALUE));
                Picasso built = builder.build();
                built.setIndicatorsEnabled(false);
                built.setLoggingEnabled(true);
                Picasso.setSingletonInstance(built);

The error log:

03-02 13:04:15.325 2362-2362/? E/AndroidRuntime: FATAL EXCEPTION: main
                                             Process: com.dest.ola, PID: 2362
                                             java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/OkHttpClient;
                                                 at com.squareup.picasso.OkHttpDownloader.defaultOkHttpClient(OkHttpDownloader.java:31)
                                                 at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:76)
                                                 at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:65)
                                                 at com.destiny.offrruu.StartActivity.onCreate(StartActivity.java:33)
                                                 at android.app.Activity.performCreate(Activity.java:5990)
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442)
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:156)
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                 at android.os.Looper.loop(Looper.java:211)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5371)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)
                                              Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.okhttp.OkHttpClient" on path: DexPathList[[zip file "/data/app/com.dest.ola-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
                                                 at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                 at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                 at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                 at com.squareup.picasso.OkHttpDownloader.defaultOkHttpClient(OkHttpDownloader.java:31) 
                                                 at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:76) 
                                                 at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:65) 
                                                 at com.destiny.offrruu.StartActivity.onCreate(StartActivity.java:33) 
                                                 at android.app.Activity.performCreate(Activity.java:5990) 
                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) 
                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
                                                 at android.app.ActivityThread.access$800(ActivityThread.java:156) 
                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                 at android.os.Looper.loop(Looper.java:211) 
                                                 at android.app.ActivityThread.main(ActivityThread.java:5371) 
                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                 at java.lang.reflect.Method.invoke(Method.java:372) 
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945) 
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740) 
                                                Suppressed: java.lang.ClassNotFoundException: com.squareup.okhttp.OkHttpClient
                                                 at java.lang.Class.classForName(Native Method)
                                                 at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                 at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                 at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                        ... 18 more
                                              Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

This is the gradlw file for dependencies :

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:recyclerview-v7:25.1.0'
compile 'com.google.android.gms:play-services-ads:10.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp3:okhttp:3.6.0'
compile 'com.squareup.okio:okio:1.11.0'}

I had google a little and fond that the "L" (Lcom) in the below code makes android confuse.

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/OkHttpClient;

Please let me know the solution to it.

Upvotes: 0

Views: 435

Answers (1)

Sarthakpandit
Sarthakpandit

Reputation: 111

Well This is not an appropriate solution but it seems that there is some bug in okhttp library.

To solve this error i just replaced my gradle with the older version of okhttp

    compile 'com.squareup.okhttp:okhttp:2.5.0'

instead of

compile 'com.squareup.okhttp3:okhttp:3.6.0'

And it works like a charm. Thankyou.

Upvotes: 1

Related Questions