Я получаю эту ошибку при запуске программы:Исключение в потоке «главный» java.lang.NoSuchMethodError: org.apache.commons.csv.CSVParser.parse
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.csv.CSVParser.parse
Это мой файл SBT сборки:
name := "mytest"
version := "1.0"
scalaVersion := "2.10.6"
organization := "org.test"
val sparkVersion = "1.6.1"
val mahoutVersion = "0.12.1"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-mllib" % sparkVersion,
// Mahout's Spark libs
"org.apache.mahout" %% "mahout-math-scala" % mahoutVersion,
"org.apache.mahout" %% "mahout-spark" % mahoutVersion
exclude("org.apache.spark", "spark-core_2.10"),
"org.apache.mahout" % "mahout-math" % mahoutVersion,
"org.apache.mahout" % "mahout-hdfs" % mahoutVersion
exclude("com.thoughtworks.xstream", "xstream")
exclude("org.apache.hadoop", "hadoop-client"),
// other external libs
"com.databricks" % "spark-csv_2.10" % "1.3.2",
"com.github.nscala-time" %% "nscala-time" % "2.16.0"
exclude("org.apache.commons", "commons-csv"),
"org.elasticsearch" % "elasticsearch" % "2.3.0",
"org.elasticsearch" % "elasticsearch-spark_2.10" % "2.3.0"
exclude("org.apache.spark", "spark-catalyst_2.10")
exclude("org.apache.spark", "spark-sql_2.10"))
resolvers += "typesafe repo" at " http://repo.typesafe.com/typesafe/releases/"
resolvers += Resolver.mavenLocal
assemblyMergeStrategy in assembly := {
case "plugin.properties" => MergeStrategy.discard
case PathList("org", "joda", "time", "base", "BaseDateTime.class") => MergeStrategy.first
case PathList("org", "apache", "commons", "csv", "CSVParser.class") => MergeStrategy.first
case PathList("org", "apache", "commons", "csv", "CSVPrinter.class") => MergeStrategy.first
case PathList("org", "apache", "commons", "csv", "ExtendedBufferedReader.class") => MergeStrategy.last
case PathList(ps @ _*) if ps.last endsWith "package-info.class" =>
MergeStrategy.first
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
Я также протестировали "com.databricks" % "spark-csv_2.10" % "1.5.0"
и "com.databricks" % "spark-csv_2.10" % "1.4.0"
, но та же ошибка появляется все время. Я знаю, что это имеет какое-то отношение к зависимостям. Нужно ли добавлять любую другую библиотеку?
Вы почти наверняка вытягиваете несовместимую версию 'commons-csv' в качестве транзитивной зависимости. Я бы предложил удалить все непрямые зависимости из ваших объявлений (те вещи, на которые вы не ссылаетесь непосредственно из вашего кода), а также удаление строк 'exclude'. – jkinkead