My application is crashing when I am launching it and I can see the reason is Retrofit in Android Studio Logcat:
java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/Platform;
at retrofit2.Retrofit$Builder.
at com.myapp.webservices.WSClient.getRetroFitAPIListener(WSClient.java:71)
at com.myapp.base.MyApplication.onCreate(MyApplication.kt:40)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1141)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5854)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1697)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6626)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Caused by: java.lang.ClassNotFoundException: Didn't find class "retrofit2.Platform" on path: DexPathList[[zip file "/data/app/com.myapp-vSwSFvUUzjH91IiAxsw1SA==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-vSwSFvUUzjH91IiAxsw1SA==/lib/arm, /system/lib, /system/vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at retrofit2.Retrofit$Builder.
at com.myapp.webservices.WSClient.getRetroFitAPIListener(WSClient.java:71)聽
at com.myapp.base.MyApplication.onCreate(MyApplication.kt:40)聽
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1141)聽
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5854)聽
at android.app.ActivityThread.-wrap1(Unknown Source:0)聽
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1697)聽
at android.os.Handler.dispatchMessage(Handler.java:106)聽
at android.os.Looper.loop(Looper.java:164)聽
at android.app.ActivityThread.main(ActivityThread.java:6626)聽
at java.lang.reflect.Method.invoke(Native Method)聽
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)聽
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)聽
2019-12-14 14:17:04.710 32665-32665/? E/AndroidRuntime: FATAL EXCEPTION: main
In build.gradle I am using:
implementation 'com.squareup.retrofit2:retrofit:2.7.0'
implementation 'com.squareup.retrofit2:converter-gson:2.7.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.7.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.0.0'
Two days ago I was able to run the application successfully after of 5 hours effort and found success with a clean and build the Gradle, answer provided here: Retrofit Issue
But now again I am facing this issue and cannot able to run the app from the last 8 hours of effort which is impacting my project delivery without any cause. Anyone is here who can help me asap?
My line of code where I am meeting this exception is:
public static WSClientListener getRetroFitAPIListener() {
Retrofit retrofit = new Retrofit.Builder() //This retrofit builder say no class deffound error
.baseUrl(WSUtils.BASE_URL)
.client(getHttpClient().build())
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder()
.setLenient()
.create()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return retrofit.create(WSClientListener.class);
}
Same here brother. Can someone please provide a solution
Update to version 2.8.1. It worked for me
Hey,
I'm using version 2.8.1 and still having this issuer. Here are my gradle depencies:
// Retrofit & co.
dependencies {
implementation 'com.squareup.okhttp3:logging-interceptor:4.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
implementation 'com.google.code.gson:gson:2.8.5'
}
and here is the stacktrace:
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/Retrofit$Builder;
E/AndroidRuntime(29127): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121)
E/AndroidRuntime(29127): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264)
E/AndroidRuntime(29127): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
E/AndroidRuntime(29127): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
E/AndroidRuntime(29127): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
E/AndroidRuntime(29127): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
E/AndroidRuntime(29127): at android.os.Handler.dispat
The strange part is that it was working before. I'll check my proguard settings.
The project I was working on was an Android library. I manage to temporarely fix the issue by adding all the retrofit dependencies (same as those I listed above) to the app consuming the library. For now it is enough, however I'll look further for a better approach.
Here is the SO thread about this issue:
https://stackoverflow.com/questions/50679999/noclassdeffounderror-when-using-retrofit-2-4-0-in-a-module-android-library
Following as below worked for me
Step 1: I have added and updated retrofit dependencies(2.9.0) in both app and library build.gradle file
Step 2: Added in app's gradle
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
Step 3: Invalidate caches and restart / Clean build and Rebuild.
Thanks,
Gowtham G
Most helpful comment
Update to version 2.8.1. It worked for me