2016-03-24 19 views
3

私は、サンプルのRetrofit Javaプログラムをビルドしようとしていました。GSONライブラリでjava.lang.NoSuchMethodErrorを解決できません

https://github.com/square/retrofit/blob/master/samples/src/main/java/com/example/retrofit/SimpleService.java

Iが必要依存ジャー(レトロフィット-2.0.0.jar、コンバータ-gson-2.0.0.jar、okhttp-3.0.0-RC1.jar、okio-1.6.0.jarを含まgson-2.0.jar)をビルドパスに追加します。

アプリケーションの実行中に次の例外が発生しました。

Exception in thread "main" java.lang.NoSuchMethodError: com.google.gson.Gson.getAdapter(Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter; 
at retrofit2.converter.gson.GsonConverterFactory.responseBodyConverter(GsonConverterFactory.java:63) 
at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:325) 
at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:308) 
at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:651) 
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:166) 
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166) 
at retrofit2.Retrofit$1.invoke(Retrofit.java:145) 
at com.sun.proxy.$Proxy0.contributors(Unknown Source) 
at SimpleService.main(SimpleService.java:40) 

依存性のあるjarファイルがありません。

私はスタンドアロンJavaアプリケーションでRetrofitを使用しようとしており、サンプルを使用してテストしていました。誰かがRetrofitの作業を示す簡単なサンプルプログラムを教えてもらえれば嬉しいです。以前のバージョンのサンプルでも良いでしょう。

+0

ありがとうございました。 –

+0

私が指摘したリンクからコードをそのまま使用しました-https://github.com/square/retrofit/blob/master/samples/src/main/java/com/example/retrofit/SimpleService.java –

+0

私は思いますこのエラーは、JVMが「クラスパス」内で「JVM」を見つけることができない場合にスローされますか? –

答えて

0

これを試してみてください:

final RETROFIT_VERSION = '2.0.0' 
final OKHTTP_VERSION = '3.2.0' 

compile "com.squareup.retrofit2:retrofit:$RETROFIT_VERSION" 
compile "com.squareup.retrofit2:converter-gson:$RETROFIT_VERSION" 
compile "com.squareup.okhttp3:okhttp:$OKHTTP_VERSION" 
compile "com.squareup.okhttp3:okhttp-urlconnection:$OKHTTP_VERSION" 

compile 'com.google.code.gson:gson:2.4' 
+0

私はあなたが示唆したように瓶のバージョンを使用して疲れたが、私はまだ以下のエラーが表示されます。スレッド "main"の例外java.lang.NoSuchMethodError:com.google.gson.Gson.newJsonReader(Ljava/io/Reader;)Lcom/google/gson/stream/JsonReader; \t at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:35) –

+0

現在のクラスパスはjars以下です。 \t \t okio-1.6.0.jar \t retrofit-2.0.0.jar \t okhttp-3.2.0。jarファイル \t okhttp-URLConnectionの-3.2.0.jar \t gson-2.4.jar \tコンバータ-gson-2.0.0.jar、彼はあなたのグレイブル –

+0

削除 'またはMavenであっても、私はWindowsのスタンドアロンアプリケーションであるプロジェクトにANTを使用します。私はあなたがANTを使ってこれを行うことができるとは確信していません。 –

4

はGradleの中でこれを追加しよう:

compile 'com.google.code.gson:gson:2.6.2' 

それは私のためにうまく機能:)

+0

'gson 2.8.0'は私に' NoSuchMethodError'を与え、2.6.2にダウングレードしました。 – Yenchi

2

ここではあなたを助けるかもしれないいくつかの依存関係です。

GSONとのGradleであなたのプロジェクトとの同期をきれいにしてください

compile 'com.google.code.gson:gson:2.7' 
compile 'com.squareup.retrofit2:converter-gson:2.1.0' 
compile 'com.squareup.retrofit2:retrofit:2.1.0' 

HTTP

compile 'org.apache.commons:commons-lang3:3.4' 
compile 'org.apache.httpcomponents:httpcore:4.4.5' 

レトロフィット。 また、プロジェクト内で同じバージョンのjarファイルを使用してみてください。

または、この行を正しい値に置き換えてください。

@GET("/repos/{owner}/{repo}/contributors") 

APIを呼び出した後の応答は何ですか。 plzブラウザのURLを確認してください。

問題が解決しない場合は教えてください。

関連する問題