3

app.gradle に以下を追加して、プロジェクトに Retrofit をインポートしました。

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 パーサーのため、Retrofit の特定のバージョン (2.0.0-beta3) をインポートする必要があります。それ以外の場合は、以前のバージョンの Retrofit を使用することを検討します。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

問題は、Retrofit が特定のバージョンの OkHttp ライブラリを必要とすることです。それだけでなく、logging-interceptor をインポートする場合は、適切なバージョンも確保する必要があります。したがって、私の場合、これは役に立ちました:

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 の問題ページで十分に文書化されているため、見つけるのは簡単ではありません。

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.
于 2016-02-04T15:27:22.950 に答える