Search code examples
sbtakka

Akka Testkit Error with Ambigous Version Error


I'm using Akka testkit library to test few of my actors.

Here is what I have in my build.sbt:

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

Here is the error that I get:

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

I'm confused as I do not have any other dependency to Akka as here is all the dependencies defined in my 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")
)

Any ideas how to fix this issue?


Solution

  • So I had to add few dependencies for Akka like this:

      "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 in my case is 2.6.10

    It looks ugly to have to mention these dependencies, but it is how I was able to get rid of the error.