2015-10-02 23 views
38

mam włączone te zależności do mojego projektu:modernizacji fabryki konwerter nie może uzyskać dostępu GsonConverterFactory

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'

Mam klasy, gdzie mam zamiar przejść moje API poprzez modernizacji:

public static <S> S createService(Class<S> serviceClass, String baseUrl) { 


     Retrofit builder = new Retrofit.Builder() 
       .baseUrl(baseUrl) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build();  

      RestAdapter adapter = builder.build();*/ 

     return builder.create(serviceClass); 
    } 

a teraz , daje mi to błąd kompilacji:

Error:(24, 17) error: method addConverterFactory in class Builder cannot be applied to given types; required: Factory found: GsonConverterFactory reason: actual argument GsonConverterFactory cannot be converted to Factory by method invocation conversion

Jak mogę to rozwiązać? Postępowałem zgodnie z dokumentacją. Co jest nie tak?

Odpowiedz

111

Spróbuj użyć tej samej wersji dla retrofitu i konwertera-gson - 2.0.0-beta2. Używasz beta2 do modernizacji i beta1 dla konwertera.

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 

Ważna uwaga!

Retrofit zmienia nazwę pakietu od wersji 2.0.0-beta3. Teraz powinieneś użyć com.squareup.retrofit2. Oto przykład:

compile 'com.squareup.retrofit2:retrofit:2.2.0' 
compile 'com.squareup.retrofit2:converter-gson:2.2.0' 
+1

jesteś wielkim mężczyzną). Ale nie ma żadnego zasobu, który wskazuje, że muszę używać tej samej wersji beta2. – AEMLoviji

+0

@AEMLoviji Zasób nazywa się zdrowym rozsądkiem, nie zgodziłbyś się? Przede wszystkim dlatego, że w fazie beta interfejsy podlegają zmianom, które zostały napisane w dokumentach dotyczących modernizacji. –

+0

Po prostu wpadłem na ten problem. i rozwiązała 2 godziny. dziękuję!) – ip696

1
error: method addConverterFactory in class Builder cannot be applied to given types; 
    required: Factory 
    found: GsonConverterFactory 
    reason: actual argument GsonConverterFactory cannot be converted to Factory by method invocation conversion 

Jeśli otrzymujesz ten błąd, powodem jest źle dependancy włączone. Zależność/zmiana

dodawania pliku w aplikacji build.gradle jak

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 

upewnić się, że wersja konwertera jest 2.0.0-beta2 nie 2.0.0-beta1.

2

Dzięki najnowszym wydaniu Beta 2.0.3 trzeba dodać:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3' 
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' 

Upewnij się, że pasuje do wersji biblioteki modernizacyjny z wersji konwertera gson.

+0

Różnica jest trudna do zauważenia.Tak więc dla każdego, kto jest tak ślepy jak ja - musisz dodać "2" do nazwy pakietu. – reVerse

2

Jest to najnowsza:

compile 'com.squareup.retrofit2:retrofit:2.0.0' 
compile 'com.squareup.retrofit2:converter-gson:2.0.0' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0' 

Jeśli używasz wersji beta:

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

W build.gradle (APP) zamiast:

implementation 'com.google.code.gson:gson:2.8.2' 

zapisu:

implementation 'com.squareup.retrofit2:converter-gson:2.3.0'