Elastic4S-Jackson';s类ScalaObject映射器是';t发现并抛出一个NoSuchMethodError
我在Scala项目中使用Elastic4S时遇到问题。将引发以下错误: java.lang.NoSuchMethodError: com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper.$init$(Lcom/fasterxml/jackson/module/scala/experimental/ScalaObjectMapper;)V 其次是: java.lang.NoClassDefFoundError:无法初始化类 com.sksamuel.elastic4s.json.JacksonSupport$ 以下是使用的依赖项:Elastic4S-Jackson';s类ScalaObject映射器是';t发现并抛出一个NoSuchMethodError,scala,jackson-databind,elastic4s,Scala,Jackson Databind,Elastic4s,我在Scala项目中使用Elastic4S时遇到问题。将引发以下错误: java.lang.NoSuchMethodError: com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper.$init$(Lcom/fasterxml/jackson/module/scala/experimental/ScalaObjectMapper;)V 其次是: java.lang.NoClassDefFoundError:无法初始化类
"com.sksamuel.elastic4s" %% "elastic4s-core" % "6.7.3",
"com.sksamuel.elastic4s" %% "elastic4s-http" % "6.7.3",
"com.github.swagger-akka-http" %% "swagger-akka-http" % "2.0.4",
"com.github.swagger-akka-http" %% "swagger-scala-module" % "2.0.5",
...
),
assemblyMergeStrategy in assembly := { _ => MergeStrategy.first }
从Elastic4s发出的唯一一位代码是这样的:
def testClusterUp(log: LoggingAdapter): Unit = {
val response: Response[NodeInfoResponse] = client.execute(
nodeInfo()
).await
if (response.isError) {
log.error(s"[ERROR]-[ELASTICSEARCH] $response")
throw new ExceptionInInitializerError(s"an error occurred during Elastic connector initialization : ${response.error}")
} else if (response.isSuccess) {
log.info("Cluster started successfully !")
}
}
如果您有任何帮助,我们将不胜感激。似乎还有一些其他的依赖项正在覆盖此依赖项。例如,
swagger-akka http
使用了另一个版本的jackson scala模块,如果不在build.sbt
中进行一些调整,就不能将其包括在内。以下是在这种情况下的配置:
("com.github.swagger-akka-http" %% "swagger-akka-http" % "2.0.4") excludeAll(ExclusionRule(organization = "com.fasterxml.jackson.module")),
("com.github.swagger-akka-http" %% "swagger-scala-module" % "2.0.5") excludeAll(ExclusionRule(organization = "com.fasterxml.jackson.module")),
有关sbt依赖项的排除规则,请参见此处: