dev90
dev90

Reputation: 7539

java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso"

Its neither giving any error message at Gradle build nor at Compile time, but when i run the app it crashes and gives me following error message.

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path: DexPathList[[zip file "/data/app/com.app.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.app.myapp-1/lib/x86, /vendor/lib, /system/lib]]

This is my Application Gradle File

compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {

        applicationId 'com.app.myapp'
        minSdkVersion 21
        targetSdkVersion 23
        versionCode 26
        versionName "1.0"
        multiDexEnabled true

    lintOptions {
        abortOnError false
    }
    dexOptions {
        javaMaxHeapSize "4g"
        jumboMode true
    }

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.squareup.okhttp:logging-interceptor:2.6.0'
    compile 'org.glassfish:javax.annotation:10.0-b28'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.google.maps.android:android-maps-utils:0.4'
    compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.android.gms:play-services:9.0.1'

Stack Trace

09-16 03:02:22.336 27190-27190/com.myapp.app E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.myapp.app, PID: 27190
                                                                 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/picasso/Picasso;
                                                                     at com.myapp.app.service.CustomSwipeAdapter.instantiateItem(CustomSwipeAdapter.java:97)
                                                                     at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1006)
                                                                     at android.support.v4.view.ViewPager.populate(ViewPager.java:1154)
                                                                     at android.support.v4.view.ViewPager.populate(ViewPager.java:1088)
                                                                     at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:542)
                                                                     at com.myapp.app.appMainActivity$LoadImage.onPostExecute(appMainActivity.java:811)
                                                                     at com.myapp.app.appMainActivity$LoadImage.onPostExecute(appMainActivity.java:757)
                                                                     at android.os.AsyncTask.finish(AsyncTask.java:636)
                                                                     at android.os.AsyncTask.access$500(AsyncTask.java:177)
                                                                     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:135)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                     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:903)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                  Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path: DexPathList[[zip file "/data/app/com.myapp.app-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.app-1/lib/x86, /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.myapp.app.service.CustomSwipeAdapter.instantiateItem(CustomSwipeAdapter.java:97) 
                                                                     at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1006) 
                                                                     at android.support.v4.view.ViewPager.populate(ViewPager.java:1154) 
                                                                     at android.support.v4.view.ViewPager.populate(ViewPager.java:1088) 
                                                                     at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:542) 
                                                                     at com.myapp.app.appMainActivity$LoadImage.onPostExecute(appMainActivity.java:811) 
                                                                     at com.myapp.app.appMainActivity$LoadImage.onPostExecute(appMainActivity.java:757) 
                                                                     at android.os.AsyncTask.finish(AsyncTask.java:636) 
                                                                     at android.os.AsyncTask.access$500(AsyncTask.java:177) 
                                                                     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:135) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                     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:903) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                    Suppressed: java.lang.ClassNotFoundException: com.squareup.picasso.Picasso
                                                                     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

Upvotes: 3

Views: 2686

Answers (1)

EpicPandaForce
EpicPandaForce

Reputation: 81549

You most definitely forgot to add a custom application for your multidex.

public class CustomApplication extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

In AndroidManifest.xml:

<application
    android:name="something.CustomApplication"

EDIT: On a sidenote... why on earth are you adding the entire Google Play Services? You should only add whichever part you need. Read the "Selectively compiling APIs into your executable" section.

Upvotes: 1

Related Questions