AbstractMethodError при использовании RxJavaCallAdapterFactory в Retrofit 2

Я получаю эту ошибку:

FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.AbstractMethodError: abstract method not implemented
at retrofit.RxJavaCallAdapterFactory.get(RxJavaCallAdapterFactory.java)
at retrofit.Retrofit.nextCallAdapter(Retrofit.java:189)
at retrofit.Retrofit.callAdapter(Retrofit.java:175)
at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45)
at retrofit.MethodHandler.create(MethodHandler.java:26)
at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)
at retrofit.Retrofit$1.invoke(Retrofit.java:132)
at $Proxy0.getPosts(Native Method)

при попытке использовать RxJavaCallAdapterFactory при модернизации. Я использую com.squareup.retrofit:retrofit:2.0.0-beta1 и com.squareup.retrofit:adapter-rxjava:2.0.0-beta1.

Вот как я создал API-интерфейс:

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(FORUM_SERVER_URL)
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .build();

mForumApi = retrofit.create(ForumApi.class);

FORUM_SERVER_URL:
private static final String FORUM_SERVER_URL = "http://jsonplaceholder.typicode.com";

мой метод интерфейса:

@GET("/posts")
public Observable<List<Post>> getPosts();

Я вызываю это через:

   mForum.getApi()
            .getPosts()
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<Post>>() {
                @Override
                public void onCompleted() {}
                @Override
                public void onError(Throwable e) {}
                @Override
                public void onNext(List<Post> posts) {
                    mView.displayPosts(posts);
                }
            });
}

getApi возвращает mForumApi
getPosts — это место, где возникает ошибка, это вызов API


person Gwapo Gwapo    schedule 12.10.2015    source источник
comment
Если вы перейдете к классу RxJavaCallAdapterFactory, увидите ли вы отсутствующий метод? Github предполагает, что он реализован github.com/square/retrofit/blob/master/retrofit-adapters/rxjava/   -  person FriendlyMikhail    schedule 13.10.2015
comment
Вы не установили клиент OkHttpClient на свой RetrofitBuilder   -  person IgorGanapolsky    schedule 18.01.2016


Ответы (1)


Для меня оказалось, что я использую разные бета-версии компонентов

Изменение (обратите внимание на бета-версию 1):

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'

до (теперь beta2)

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'

заставил это работать на меня.

Глупая ошибка, но да...

person Langusten Gustel    schedule 15.10.2015