ich diese Fehlermeldung erhalten, wenn das Programm ausgeführt wird:Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.csv.CSVParser.parse
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.csv.CSVParser.parse
Dies ist meine SBT Assembly-Datei:
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)
}
ich habe auch getestet "com.databricks" % "spark-csv_2.10" % "1.5.0"
und "com.databricks" % "spark-csv_2.10" % "1.4.0"
, aber der gleiche Fehler erscheint die ganze Zeit. Ich weiß, dass es etwas mit Abhängigkeiten zu tun hat. Muss ich eine andere Bibliothek hinzufügen?
Sie ziehen fast sicher eine inkompatible Version von 'commons-csv' als transitive Abhängigkeit ein. Ich würde vorschlagen, alle nicht direkten Abhängigkeiten von Ihren Deklarationen zu entfernen (die Dinge, die Sie nicht direkt aus Ihrem Code referenzieren), und auch die Zeilen "exclude" entfernen. – jkinkead