Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform in Android 在Android中出现了运行时异常 java.lang.NoClassDefFoundError: retrofit2.Platform。
Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform in Android 在Android中出现了运行时异常 java.lang.NoClassDefFoundError: retrofit2.Platform。
我正在使用Retrofit来处理来自移动端的服务器端数据,在实现Retrofit之后,我遇到了以下异常,请问是否有人了解这个问题,告诉我我做错了什么。
初始化Retrofit:
mRetrofit = new Retrofit.Builder() .baseUrl(AppConstance.APP_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); Iservice = mRetrofit.create(IdeaService.class);
Gradle文件:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.0' compile 'com.squareup.okhttp:okhttp:2.2.0' compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' compile 'com.squareup.okio:okio:1.7.0' }
堆栈跟踪:
04-26 11:54:36.441 18355-18355/com.omt.example W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41da0c98) 04-26 11:54:36.441 18355-18355/com.omt.example W/dalvikvm: threadid=1: uncaught exception occurred 04-26 11:54:36.442 18355-18355/com.omt.example W/System.err: java.lang.NoClassDefFoundError: retrofit2.Platform 04-26 11:54:36.444 18355-18355/com.omt.example W/System.err: at retrofit2.Retrofit$Builder.(Retrofit.java:402) 04-26 11:54:36.445 18355-18355/com.omt.example W/System.err: at com.omt.example.utils.Idea.onCreate(Idea.java:79) 04-26 11:54:36.447 18355-18355/com.omt.example W/System.err: at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 04-26 11:54:36.448 18355-18355/com.omt.example W/System.err: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4541) 04-26 11:54:36.449 18355-18355/com.omt.example W/System.err: at android.app.ActivityThread.access$1500(ActivityThread.java:151) 04-26 11:54:36.450 18355-18355/com.omt.example W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381) 04-26 11:54:36.451 18355-18355/com.omt.example W/System.err: at android.os.Handler.dispatchMessage(Handler.java:110) 04-26 11:54:36.451 18355-18355/com.omt.example W/System.err: at android.os.Looper.loop(Looper.java:193) 04-26 11:54:36.452 18355-18355/com.omt.example W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5292) 04-26 11:54:36.453 18355-18355/com.omt.example W/System.err: at java.lang.reflect.Method.invokeNative(Native Method) 04-26 11:54:36.454 18355-18355/com.omt.example W/System.err: at java.lang.reflect.Method.invoke(Method.java:515) 04-26 11:54:36.455 18355-18355/com.omt.example W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 04-26 11:54:36.456 18355-18355/com.omt.example W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 04-26 11:54:36.457 18355-18355/com.omt.example W/System.err: at dalvik.system.NativeStart.main(Native Method) 04-26 11:54:36.457 18355-18355/com.omt.example W/dalvikvm: threadid=1: calling UncaughtExceptionHandler
原因:在Android中出现java.lang.NoClassDefFoundError: retrofit2.Platform的运行时异常是因为缺少retrofit2.Platform类。
解决方法:将retrofit2.Platform类添加到项目中。
整理成文章如下:
在Android开发中,有时候会遇到java.lang.NoClassDefFoundError: retrofit2.Platform的运行时异常。这个异常的出现是因为缺少retrofit2.Platform类。下面是一个解决方法的示例代码:
首先,在Service类中添加下面的代码:
//创建OkHttpClient客户端 Strategy strategy = new AnnotationStrategy(); //定义拦截器,添加身份验证头部 Interceptor interceptor = new Interceptor() { public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException { Request newRequest = chain.request().newBuilder().addHeader("User-Agent", "Retrofit-Sample-App").build(); return chain.proceed(newRequest); } }; Serializer serializer = new Persister(strategy); OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.interceptors().add(interceptor); OkHttpClient client = builder.build(); HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); builder.networkInterceptors().add(httpLoggingInterceptor); builder.build(); RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.create(); Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(SimpleXmlConverterFactory.create(serializer)) .addCallAdapterFactory(rxAdapter) .baseUrl(YellowTalkConstant.BASE_URL) .client(client) .build(); try{ this.mYellowTalkApi = retrofit.create(YellowTalkApi.class); }catch (Exception ex) { Log.e("Exception", ex.toString()); }
以上代码中,我们使用了retrofit2.Platform类。如果在运行时出现java.lang.NoClassDefFoundError: retrofit2.Platform异常,说明项目中缺少retrofit2.Platform类。
为了解决这个问题,我们需要将retrofit2.Platform类添加到项目中。可以通过引入相关的依赖或者将相关的jar包添加到项目中来解决。完成后,重新编译和运行项目,异常就会得到解决。
通过以上方法,我们可以解决出现java.lang.NoClassDefFoundError: retrofit2.Platform的运行时异常,保证项目的正常运行。
问题原因:在Android应用中出现"Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform"的错误,可能的原因是缺少了相关的依赖。
解决方法:
1. 在build.gradle文件中添加依赖:
compile 'com.android.support:multidex:1.0.0'
2. 在build.gradle文件中设置multiDexEnabled为true:
multiDexEnabled true
3. 在AndroidManifest.xml文件中的application标签内添加android:name属性,值为“android.support.multidex.MultiDexApplication”:
以上步骤解决了我遇到的问题。我的应用在Android 5.0及以上版本可以正常工作,但在Android 4.4上无法工作,通过以上步骤解决了这个问题。感谢。