2016-07-31 9 views
4

Ich habe folgende build.sbt Datei:Jackson Version ist zu alt

name := "myProject" 

version := "1.0" 

scalaVersion := "2.11.8" 

javaOptions ++= Seq("-Xms512M", "-Xmx2048M", "-XX:MaxPermSize=2048M", "-XX:+CMSClassUnloadingEnabled") 


dependencyOverrides ++= Set(
    "com.fasterxml.jackson.core" % "jackson-core" % "2.8.1" 
) 

// additional libraries 
libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "2.0.0" % "provided", 
    "org.apache.spark" %% "spark-sql" % "2.0.0" % "provided", 
    "org.apache.spark" %% "spark-hive" % "2.0.0" % "provided", 
    "com.databricks" %% "spark-csv" % "1.4.0", 
    "org.scalactic" %% "scalactic" % "2.2.1", 
    "org.scalatest" %% "scalatest" % "2.2.1" % "test", 
    "org.scalacheck" %% "scalacheck" % "1.12.4", 
    "com.holdenkarau" %% "spark-testing-base" % "2.0.0_0.4.4" % "test", 
) 

Allerdings, wenn ich den Code laufen lasse, bekomme ich diesen Fehler:

An exception or error caused a run to abort. 
java.lang.ExceptionInInitializerError 
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.4.4 
    at com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:56) 
    at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:19) 
    at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:549) 
    at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:82) 
    at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala) 
    ... 58 more 

Warum ist dies der Fall? Ich habe eine neuere Version von Jackson zu dependencyOverrides hinzugefügt (nachdem Sie hier Spark Parallelize? (Could not find creator property with name 'id') gesucht haben), so sollte eine ältere Version nicht verwendet werden.

+0

Es muss etwas anderes sein, das die ältere Version als Abhängigkeit zieht. Sie müssen herausfinden, was das ist und eine Version von ihm erhalten, die mit Jackson aktuell ist. Maven würde es leicht machen, das herauszufinden. – duffymo

+0

Versuchen Sie am Ende Jackson-Abhängigkeit in 'libraryDependencies' mit' force() 'hinzuzufügen:' libraryDependencies ++ = Seq (... "com.fasterxml.jackson.core"% "jackson-core"% "2.8.1 "force()" –

Antwort

3

jackson-core und jackson-databind-Versionen sollten übereinstimmen (zumindest bis zur Nebenversion, glaube ich).

So entfernen Sie die dependencyOverrides und haben

libraryDependencies ++= Seq(
    ... 
    "com.fasterxml.jackson.core" % "jackson-databind" % "2.8.1" 
) 

Oder beides angeben in dependencyOverrides

dependencyOverrides ++= Set(
    "com.fasterxml.jackson.core" % "jackson-core" % "2.8.1" 
    "com.fasterxml.jackson.core" % "jackson-databind" % "2.8.1" 
) 

Obwohl ich bin nicht sicher, ich verstehe, was Sie zu tun versuchen; Die verknüpfte Frage scheint zu sagen, dass Sie eine ältere Version (2.4.4) verwenden sollten.