scala - Play-json 2.7.1 : java. lang.NoSuchMethodError

标签 scala playframework play-json

将 play-json 升级到 2.7.0 后,我开始遇到运行时错误:

[info] com.mycompany.controllers.HealthControllerSpec *** ABORTED ***
[info]   java.lang.NoSuchMethodError: play.api.libs.json.JsonConfiguration$.apply$default$2()Lplay/api/libs/json/OptionHandlers;
[info]   at com.mycompany.util.json.SnakeCase.$init$(SnakeCase.scala:41)
[info]   at com.mycompany.util.playframework.controllers.HealthView$.<init>(HealthView.scala:15)
[info]   at com.mycompany.util.playframework.controllers.HealthView$.<clinit>(HealthView.scala)
[info]   at com.mycompany.util.playframework.controllers.HealthController.<init>(HealthController.scala:25)
[info]   at com.mycompany.util.playframework.controllers.HealthControllerSpec.$anonfun$new$2(HealthControllerSpec.scala:30)
[info]   at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:20)

有人能给我指出理由吗?

HealthView:

case class HealthView(app: String, description: String, version: Option[String])

object HealthView extends SnakeCase {

  def apply(config: Configuration): HealthView =
    HealthView(
      config.get[String]("app.name"),
      config.get[String]("app.description"),
      config.getOptional[String]("app.version")
    )

  implicit val format: OFormat[HealthView] = Json.format[HealthView]

}

SnakeCase:

trait SnakeCase {

  implicit val jsonConfig: Aux[Json.MacroOptions] = JsonConfiguration(SnakeCaseNaming)

}

次要版本的发布应该是二进制兼容的。

最佳答案

正如特拉维斯·布朗指出的那样,您存在版本冲突。

由于 Play 项目中包含一个 play-json,因此您不应该对 play-json 有另一个依赖项。

如果您有(因为我有一个多模块项目),请确保主要版本适合。

例如在plugins.sbt中:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.7.0")

并作为依赖项(不在 Play 模块中!):

"com.typesafe.play" %% "play-json" % "2.7.1"

关于scala - Play-json 2.7.1 : java. lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592996/

相关文章:

scala - 如何使用 Scala Play 框架更新嵌套的 json?

scala - 如何在模式的开头添加一列?

design-patterns - 是否可以向 Scala 中的内置类型添加方法?

java - 为什么不在模板中显示 Playframework 自定义验证消息

mongodb - SBT 在依赖位置添加额外标签

java - 在 play1.2.4 应用程序中使用 ssl

json - 使用 Scala Play 读取 JSON 时出现未知字段时如何抛出错误?

json - Play Json 读取嵌套通用序列化 Json

algorithm - 以功能方式拆分流

scala - metastore_db 不会在 Windows 7 中使用 apache spark 2.2.1 创建