oskin1
oskin1

Reputation: 13

`java.lang.NoSuchMethodError: cats.FlatMap.map2` in runtime when using `.sequence`

I'm getting the following runtime error after migrating from cats v1.1.0 to v1.4.0 (An error arises from places where .sequence (cats.Traverse) is used).

The code looks like:

import cats.implicits._
import cats.effect.IO

List(1, 2, 3).map(x => IO(...)).sequence
java.lang.NoSuchMethodError: cats.FlatMap.map2$(Lcats/FlatMap;Ljava/lang/Object;Ljava/lang/Object;Lscala/Function2;)Ljava/lang/Object;
    at cats.effect.IOLowPriorityInstances$IOEffect.map2(IO.scala:765)
...

Here is my build.sbt:

organization := "org.xxx"

name := "yyy"

version := "0.0.1"

scalaVersion := "2.12.9"

resolvers += Resolver.bintrayRepo("hseeberger", "maven")
resolvers ++= Seq("Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/")

lazy val doobieVersion = "0.5.3"
lazy val akkaHttpVersion = "10.1.1"
lazy val akkaVersion = "2.5.12"
lazy val catsVersion = "1.4.0"
lazy val circeVersion = "0.9.3"

lazy val doobieDeps = Seq(
  "org.tpolecat" %% "doobie-core"      % doobieVersion,
  "org.tpolecat" %% "doobie-postgres"  % doobieVersion,
  "org.tpolecat" %% "doobie-scalatest" % doobieVersion,
  "org.tpolecat" %% "doobie-hikari"    % doobieVersion
)

lazy val catsDeps = Seq(
  "org.typelevel" %% "cats-effect" % catsVersion,
  "org.typelevel" %% "cats-core" % catsVersion
)

lazy val otherDeps = Seq(
  "com.github.pureconfig" %% "pureconfig" % "0.9.1",
  "org.scorexfoundation" %% "scrypto" % "2.1.1",
  "de.heikoseeberger" %% "akka-http-circe" % "1.20.1",
  "org.scalaj" %% "scalaj-http" % "2.4.0",
  "org.flywaydb" % "flyway-core" % "5.1.1",
  "com.github.blemale" %% "scaffeine" % "2.5.0",
  ("org.scorexfoundation" %% "sigma-state" % "master-2b4b07a1-SNAPSHOT")
    .exclude("ch.qos.logback", "logback-classic")
    .exclude("org.scorexfoundation", "scrypto"),
)
lazy val circeDeps = Seq(
  "io.circe" %% "circe-core" % circeVersion,
  "io.circe" %% "circe-parser" % circeVersion,
  "io.circe" %% "circe-generic" % circeVersion
)

libraryDependencies ++= (otherDeps ++ doobieDeps ++ catsDeps ++ loggingDeps ++ akkaDeps ++ circeDeps ++ testDeps)

I've tried to run it different ways (idea, set run) and on different platforms - the result is always the same.

What could it be caused by?

Upvotes: 0

Views: 1157

Answers (1)

Dmytro Mitin
Dmytro Mitin

Reputation: 51658

Try to change versions to

"org.typelevel" %% "cats-effect" % "1.4.0",
"org.typelevel" %% "cats-core" % "1.6.1"

Your project seems to work with them.

Upvotes: 1

Related Questions