首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Play-json 2.7.1: java.lang.NoSuchMethodError

Play-json 2.7.1: java.lang.NoSuchMethodError
EN

Stack Overflow用户
提问于 2019-02-08 12:59:18
回答 1查看 2K关注 0票数 2

在将play升级到2.7.0之后,我开始面临一个运行时错误:

代码语言:javascript
复制
[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

代码语言:javascript
复制
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

代码语言:javascript
复制
trait SnakeCase {

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

}

小版本的版本应该是二进制兼容的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-08 17:56:35

正如特拉维斯·布朗( Travis Brown )所指出的,你有版本冲突。

正如在Play项目中包含了一个play-json一样,您不应该有另一个对play-json的依赖。

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

例如在plugins.sbt

代码语言:javascript
复制
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.7.0")

并作为依赖项(不是在游戏模块中!):

代码语言:javascript
复制
"com.typesafe.play" %% "play-json" % "2.7.1"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54592996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档