0

Java api を使用して Google アナリティクスを実装しようとしていますが、この例外で立ち往生しています

java.lang.NoSuchMethodError: com.google.common.base.Joiner.on(C)Lcom/google/common/base/Joiner;
at com.google.api.client.auth.oauth2.AuthorizationCodeFlow$Builder.setScopes(AuthorizationCodeFlow.java:644)
at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder.setScopes(GoogleAuthorizationCodeFlow.java:256)
at com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder.<init>(GoogleAuthorizationCodeFlow.java:225)
at com.stpl.pats.bl.event.general.HelloAnalyticsApiSample.authorize(HelloAnalyticsApiSample.java:71)
at com.stpl.pats.bl.event.general.HelloAnalyticsApiSample.initializeAnalytics(HelloAnalyticsApiSample.java:157)
at com.stpl.pats.bl.event.general.HelloAnalyticsApiSample.main(HelloAnalyticsApiSample.java:39)

私のコードのどこが悪いのか教えてください...

4

2 に答える 2

1

Joiner.on(char separator)どうやら、実行時に見つかったバージョンには戻り値がありませんが、JoinerGuavaのバージョンはgoogle-collectionsからのインポート以来常にそれを持っていたので、別のjarに埋め込まれたバージョンのコードのように見えます(したがって、コード、依存関係のみ)。

HelloAnalyticsApiSampleはあなたのコードであり、変更できると思います。main()39行目の前に次を追加します。

System.out.println(com.google.common.base.Joiner.class
        .getProtectionDomain().getCodeSource().getLocation());

(または選択したロギングフレームワークを使用します)。次に、問題のあるバージョンを含むjarのパスを取得する必要があります。

于 2012-12-17T14:27:05.807 に答える
0

私の場合は、プロジェクトに google-collection-rc1.jar もあったため、古いバージョンの Joiner クラス (メソッドなし) が見つかり、グアバ内にある正しいバージョンではありませんでした。瓶。

そのコレクション jar を削除する (推奨) か、グアバ jar よりもクラス パスの後ろに移動します (コレクション jar 内のすべてのクラスがグアバ jar にあると思うので、これは基本的に同じことです)。

于 2013-03-03T14:05:29.410 に答える