java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering
。我反编译了那个jar,发现它缺少那个方法。
然而,在其他节点上,一切都很好。相同的项目和相同版本的sbt(0.13.8),不知道哪里出错了。
更新
libraryDependencies ++= {
val akkaV = "2.3.6"
val sprayV = "1.3.2"
val jacksonV = "2.4.1"
val kamonVersion = "0.5.2"
Seq(
"org.apache.poi" % "poi" % "3.12"
, "org.apache.poi" % "poi-ooxml" % "3.12"
, "io.spray" %% "spray-routing" % sprayV
, "io.spray" %% "spray-can" % sprayV
, "io.spray" %% "spray-client" % sprayV
, "io.spray" %% "spray-http" % sprayV
, "io.spray" %% "spray-testkit" % sprayV % "test"
, "io.spray" %% "spray-json" % "1.3.1"
, "io.spray" %% "spray-caching" % "1.3.1"
, "org.scalatest" %% "scalatest" % "2.2.1" % "test"
, "org.reactivemongo" %% "reactivemongo" % "0.11.1"
, "com.github.nscala-time" %% "nscala-time" % "1.2.0"
, "com.typesafe.akka" %% "akka-actor" % akkaV
, "com.typesafe.akka" %% "akka-slf4j" % akkaV
, "com.typesafe.akka" %% "akka-testkit" % akkaV % "test"
, "org.specs2" %% "specs2-core" % "2.4.15" % "test"
, "com.gettyimages" %% "spray-swagger" % "0.5.0"
, "ch.qos.logback" % "logback-classic" % "1.1.2"
, "com.fasterxml.jackson.core" % "jackson-core" % jacksonV
, "com.fasterxml.jackson.core" % "jackson-annotations" % jacksonV
, "com.fasterxml.jackson.core" % "jackson-databind" % jacksonV
, "com.fasterxml.jackson.dataformat" % "jackson-dataformat-yaml" % jacksonV
, "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % jacksonV
, ("com.sksamuel.elastic4s" %% "elastic4s-core" % "1.6.0")
, "org.scala-lang.modules" %% "scala-async" % "0.9.3"
, "org.apache.velocity" % "velocity" % "1.7"
, "com.github.mauricio" %% "mysql-async" % "0.2.15"
, ("joda-time" % "joda-time" % "2.7")
, "mysql" % "mysql-connector-java" % "5.1.34"
, "org.apache.commons" % "commons-email" % "1.2"
, "commons-lang" % "commons-lang" % "2.6"
, "commons-codec" % "commons-codec" % "1.9"
, "com.typesafe.akka" %% "akka-contrib" % akkaV
, "com.typesafe.akka" %% "akka-testkit" % akkaV
, "org.mongodb" % "mongo-java-driver" % "3.0.1"
, "com.github.scullxbones" %% "akka-persistence-mongo-rxmongo" % "0.4.0"
, "org.reflections" % "reflections" % "0.9.10"
,"org.apache.kafka" % "kafka_2.11" % "0.8.2.0" excludeAll(ExclusionRule(organization="org.slf4j"))
, "com.oracle" % "ojdbc14" % "10.2.0.4.0"
,"org.elasticsearch" % "elasticsearch" % "1.6.0"
, "io.kamon" % "kamon-core_2.11" % kamonVersion
, "io.kamon" % "kamon-log-reporter_2.11" % kamonVersion
, "io.kamon" %% "kamon-system-metrics" % kamonVersion
, "org.aspectj" % "aspectjweaver" % "1.8.5"
, "io.kamon" %% "kamon-akka" % kamonVersion
, "io.kamon" %% "kamon-spray" % kamonVersion
, "io.kamon" % "kamon-annotation_2.11" % kamonVersion
,"com.unboundid" % "unboundid-ldapsdk" % "3.0.0"
)
}
假设工作节点是A而功能失调的是B.我在两个节点上删除了jackson-core-2.1.1 jar,在sbt编译之后,节点A没有下载那个jar但是节点B没有。这真的很奇怪。
答案 0 :(得分:0)
最终通过强迫sbt使用jackson-2.4.1来解决这个问题。
, "com.fasterxml.jackson.core" % "jackson-core" % jacksonV force()
, "com.fasterxml.jackson.core" % "jackson-annotations" % jacksonV force()
, "com.fasterxml.jackson.core" % "jackson-databind" % jacksonV force()
我打印了整个项目的依赖树,发现没有对jackson 2.1.1的传递依赖,但不知何故sbt将它打包到fat-jar中。