向mysql连接器java添加依赖项会导致NoSuchMethodError:com.google.common.cache.CacheBuilder.maximumSize(I)出现在我的Play framework2应用程序中

向mysql连接器java添加依赖项会导致NoSuchMethodError:com.google.common.cache.CacheBuilder.maximumSize(I)出现在我的Play framework2应用程序中,mysql,playframework-2.0,Mysql,Playframework 2.0,正如标题所述,我添加了mysql依赖项: val appName = "report" val appVersion = "1.0-SNAPSHOT" val appDependencies = Seq( "com.google.apis" % "google-api-services-analytics" % "v3-rev15-1.8.0-beta", "com.google.http-client" % "goog

正如标题所述,我添加了mysql依赖项:

    val appName         = "report"
    val appVersion      = "1.0-SNAPSHOT"

    val appDependencies = Seq(
      "com.google.apis" % "google-api-services-analytics" % "v3-rev15-1.8.0-beta",
      "com.google.http-client" % "google-http-client-jackson2" % "1.11.0-beta",
      "com.google.oauth-client" % "google-oauth-client-jetty" % "1.11.0-beta",
      "mysql" % "mysql-connector-java" % "5.1.18",
     )

    val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
      resolvers += "Google Analytics" at "http://mavenrepo.google-api-java-client.googlecode.com/hg"
    )
这导致:

原因:java.lang.NoSuchMethodError:com.google.common.cache.CacheBuilder.maximumSize(I)Lcom/google/common/cache/CacheBuilder

我猜mysql依赖项中有某种东西摆脱了这种方法。。。
但是什么呢?

这通常意味着JAR版本的方法签名与调用代码中的方法签名不匹配。检查CacheBuilder JAR的版本。您可能不同步。

好,找到了

首先,我需要更新Guava,因为Guava 11发生了变化:

CacheBuilder#maximumSize(int) has been replaced with CacheBuilder#maximumSize(long)
因此,我将Guava更新为最新版本13.0.1,但仍然出现了错误。这以后 反思仍然是错误的。将反射更改为0.9.8,一切正常

val appDependencies = Seq(
      "com.google.apis" % "google-api-services-analytics" % "v3-rev15-1.8.0-beta",
      "com.google.http-client" % "google-http-client-jackson2" % "1.11.0-beta",
      "com.google.oauth-client" % "google-oauth-client-jetty" % "1.11.0-beta",
      "mysql" % "mysql-connector-java" % "5.1.18",
      "org.reflections" % "reflections" % "0.9.8",
      "com.google.guava" % "guava" % "13.0.1"
     )

这让我想起了一个笑话,讲的是一个名叫西莫斯的爱尔兰人在纽约开车寻找停车位。他说:“上帝啊,如果你能给我找个地方的话,我保证我会放弃威士忌,开始每周去教堂。”当他完成祈祷时,一个地方奇迹般地打开了。他笑了笑,向天空望去,说:“没关系!我找到了一个!”如果我认为对其他有同样问题的开发人员来说,这个答案足够好,我当然会标记你的答案。有一个更准确的答案不是比一个暗示更好吗?如果你不同意,我会很乐意改变正确的答案。你可能不明白这个笑话:我给你的不仅仅是一个暗示。让你通过问题中的问题的步骤是我告诉你的。你应用程序中用于番石榴和反思的罐子不正确。这个暗示是根据你的问题所能给出的。您可以根据需要更改您的回答。