带有模糊版本错误的 Akka Testkit 错误

Posted

技术标签:

【中文标题】带有模糊版本错误的 Akka Testkit 错误【英文标题】:Akka Testkit Error with Ambigous Version Error 【发布时间】:2021-03-17 12:43:43 【问题描述】:

我正在使用 Akka testkit 库来测试我的几个演员。

这是我的 build.sbt 中的内容:

"com.typesafe.akka" %% "akka-testkit" % "2.6.10" % Test,

这是我得到的错误:

java.lang.IllegalStateException: You are using version 2.6.10 of Akka, but it appears you (perhaps indirectly) also depend on older versions of related artifacts. You can solve this by adding an explicit dependency on version 2.6.10 of the [akka-actor-typed, akka-slf4j, akka-protobuf-v3, akka-stream, akka-serialization-jackson] artifacts to your project. See also: https://doc.akka.io/docs/akka/current/common/binary-compatibility-rules.html#mixed-versioning-is-not-allowed

我很困惑,因为我对 Akka 没有任何其他依赖项,因为这是我的 build.sbt 中定义的所有依赖项:

libraryDependencies ++= Seq(
  ws,
  // Our streaming library
  "io.monix" %% "monix" % "3.3.0",

  // Dependencies needed for Slick
  "com.typesafe.slick" %% "slick" % "3.3.3",
  "com.typesafe.slick" %% "slick-hikaricp" % "3.3.3",

  // For application Metrics
  "io.dropwizard.metrics" % "metrics-core" % "4.1.16",
  "io.dropwizard.metrics" % "metrics-jvm" % "4.1.16",
  "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2",
  "org.scala-lang.modules" % "scala-async_2.11" % "0.9.7",
  "com.typesafe" % "config" % "1.4.1",

  // For JSON parsing
  "com.typesafe.play" %% "play-json" % "2.9.1",
  "com.typesafe.play" %% "play-json-joda" % "2.9.1",

  // JDBC driver for mysql & H2
  "mysql" % "mysql-connector-java" % "8.0.22",
  "com.h2database" % "h2" % "1.4.186",

  // Test dependencies
  "com.typesafe.akka" %% "akka-testkit" % "2.6.10" % Test,
  "org.scalatest" %% "scalatest" % "3.2.3" % Test,
  "org.awaitility" % "awaitility" % "4.0.3" % Test,
  "org.scalatestplus.play" %% "scalatestplus-play" % "5.1.0" % Test exclude ("org.slf4j", "slf4j-simple"),
  "com.github.andyglow" %% "websocket-scala-client" % "0.3.0" % Test exclude ("org.slf4j", "slf4j-simple")
)

任何想法如何解决这个问题?

【问题讨论】:

我必须添加错误消息中提到的所有依赖项并将它们的范围进行测试。成功了! 【参考方案1】:

所以我不得不像这样为 Akka 添加一些依赖项:

  "com.typesafe.akka" %% "akka-testkit" % AkkaVersion % Test,
  "com.typesafe.akka" %% "akka-slf4j" % AkkaVersion % Test,
  "com.typesafe.akka" %% "akka-protobuf-v3" % AkkaVersion % Test,
  "com.typesafe.akka" %% "akka-serialization-jackson" % AkkaVersion % Test,
  "com.typesafe.akka" %% "akka-stream" % AkkaVersion % Test,
  "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion % Test,

我的 AkkaVersion 是 2.6.10

不得不提及这些依赖项看起来很难看,但这是我能够摆脱错误的方式。

【讨论】:

以上是关于带有模糊版本错误的 Akka Testkit 错误的主要内容,如果未能解决你的问题,请参考以下文章

Alpakka 和 Akka 版本兼容性问题

akka-http 错误:找不到参数 um 的隐式值:akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller

带有 ssl-conf 的 Akka HTTPS (SSL) 服务器

Akka Scala 服务器中的 500 内部服务器错误

错误:无法读取未定义的属性“模糊”[重复]

Akka应用程序到Heroku获取错误:Web进程无法绑定到$ PORT