2017-07-26 112 views
0

嘗試使用Google Ads API Java Client Library訪問AdWords API的(代碼片段從項目的README拍攝):谷歌廣告API的Java客戶端庫:java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkNotNull

val credential = new OfflineCredentials.Builder() 
    .forApi(OfflineCredentials.Api.ADWORDS) 
    .withClientSecrets(clientId, clientSecret) 
    .withRefreshToken(refreshToken) 
    .build() 
    .generateCredential() 

這將失敗並顯示錯誤:

[info] Exception encountered when attempting to run a suite with class name: AdwordsClientSpec *** ABORTED *** 
[info] java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkNotNull(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; 
[info] at com.google.api.ads.common.lib.auth.OfflineCredentials$Api.<init>(OfflineCredentials.java:89) 
[info] at com.google.api.ads.common.lib.auth.OfflineCredentials$Api.<clinit>(OfflineCredentials.java:81) 
[info] at AdwordsClient$.generateAdwordsCredential(AdwordsClient.scala:24) 
[info] at AdwordsClientSpec$$anonfun$1.apply$mcV$sp(AdwordsClientSpec.scala:23) 
[info] at AdwordsClientSpec$$anonfun$1.apply(AdwordsClientSpec.scala:18) 
[info] at AdwordsClientSpec$$anonfun$1.apply(AdwordsClientSpec.scala:18) 
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22) 
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) 
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 
[info] at org.scalatest.Transformer.apply(Transformer.scala:22) 

看起來像某些依賴項未正確解析。我用的是最新的自述與SBT提到的兩個文物的版本:

"com.google.api-ads" % "ads-lib" % "3.5.0", 
"com.google.api-ads" % "adwords-axis" % "3.5.0" 
+1

這看起來像一個番石榴版本衝突 - 你在你的項目中的任何番石榴依賴關係(直接還是間接)? (除了Google API庫中使用的)。如果您不確定 - 請編輯帖子以包含您的SBT依賴關係的_all_。 –

+0

@TzachZohar謝謝你的提示,這是解決這個問題的一個有用的出發點。 –

回答

1

由於@TzachZoha指出,與番石榴版本衝突是存在的。 com.google.api-ads使用番石榴16.0而不是番石榴20.0。我能夠通過改變SBT生成定義,使我的代碼編譯:

("com.google.api-ads" % "ads-lib" % "3.5.0").exclude(
    "com.google.guava", "guava"), 
    "com.google.api-ads" % "adwords-axis" % "3.5.0", 
    "com.google.guava" % "guava" % "20.0"