我在我的项目中导入了Retrofit,将以下内容添加到app.gradle:
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
然而现在当执行调用应用程序崩溃时出现以下错误:
FATAL EXCEPTION: OkHttp Dispatcher
Process: com.my.app, PID: 31176
java.lang.AbstractMethodError: abstract method "void okhttp3.Callback.onResponse(okhttp3.Call, okhttp3.Response)"
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:33)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
由于LoganSquare JSON parser,我需要导入特定版本的Retrofit(2.0.0-beta3),否则我会考虑使用以前版本的Retrofit。如何解决这个问题?
答案 0 :(得分:2)
问题是Retrofit需要某些版本的OkHttp库。不仅如此,如果您导入日志拦截器,您还需要确保正确的版本。所以,在我看来这有帮助:
compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.0-RC1'
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
GitHub issue page that's closed上有详细记载,因此不容易找到。
抱怨java.lang.AbstractMethodError: abstract method "void okhttp3.Callback.onFailure(okhttp3.Call, java.io.IOException)"
的人说如果你不使用logging-interceptor,你可以完全删除okhttp3的导入。
对于使用LoganSquare的用户,您还需要:
apt 'com.bluelinelabs:logansquare-compiler:1.3.4'
compile 'com.bluelinelabs:logansquare:1.3.4'
compile 'com.github.aurae.retrofit2:converter-logansquare:1.2.