【发布时间】:2019-01-14 08:26:11
【问题描述】:
我在 Scala 中有一个 Spark 项目,我正在尝试使用 google-cloud-storage 依赖项。以下是build.sbt添加的依赖
val sparkVersion = "2.2.0"
"org.apache.spark" %% "spark-core" % sparkVersion % "provided",
"org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
"com.google.cloud" % "google-cloud-storage" % "1.55.0",
"com.typesafe" % "config" % "1.3.1"
现在,当我构建 jar 并运行它时,我得到以下异常。
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
通过谷歌搜索,我发现这是因为我的类路径中有多个版本的Guava。
为了解决这个问题,我从 google-cloud-storage 依赖项中排除了 Guava。
"com.google.cloud" % "google-cloud-storage" % "1.55.0" exclude("com.google.guava", "guava"),
然后我得到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/cloud/storage/StorageOptions
这个错误意味着现在类路径中没有Guava jars。
我的问题是,在排除番石榴之前,由于类路径中存在多个版本而出现错误,怎么可能在排除其中一个版本时出现未找到番石榴罐子的错误。
如何解决此错误。
【问题讨论】:
标签: scala apache-spark sbt guava