scala - 为什么会出现Conflicting cross-version suffixes的错误?

标签 scala sbt akka spray

当我尝试在 sbt 中编译 Scala 项目时出现此错误。

Modules were resolved with conflicting cross-version suffixes in {file:/home/seven3n/caja/Flujo_de_caja/}flujo_de_caja:
[error]    com.typesafe.akka:akka-actor _2.11, _2.10
[error]    org.scalaz:scalaz-effect _2.10, _2.11
[error]    org.scalaz:scalaz-core _2.10, _2.11
[trace] Stack trace suppressed: run last *:update for the full output.
[error] (*:update) Conflicting cross-version suffixes in: com.typesafe.akka:akka-actor, org.scalaz:scalaz-effect, org.scalaz:scalaz-core

这是我的 build.sbt 文件:
scalaVersion := "2.11.0"

resolvers ++= Seq(
  "Sonatype snapshots repository" at "https://oss.sonatype.org/content/repositories/snapshots/",
  "Spray repository" at "http://repo.spray.io/",
  "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
)

libraryDependencies ++= {
  val akkaVersion = "2.3.2"
  val sprayVersion = "1.3.1-20140423"
  val sprayJsonVersion = "1.2.6"
  val reactiveMongoVersion = "0.11.0-SNAPSHOT"
  val scalaTestVersion = "2.1.5"
  val specs2Version = "2.3.11"
  val foloneVersion = "0.12-SNAPSHOT"
  Seq(
    "com.typesafe.akka" %% "akka-actor"        % akkaVersion,
    "com.typesafe.akka" %% "akka-testkit"      % akkaVersion,
    "io.spray"          %% "spray-can"         % sprayVersion,
    "io.spray"          %% "spray-routing"     % sprayVersion,
    "io.spray"          %% "spray-testkit"     % sprayVersion,
    "io.spray"          %% "spray-json"        % sprayJsonVersion,
    "org.reactivemongo" % "reactivemongo_2.10" % reactiveMongoVersion,
    "org.scalatest"     %% "scalatest"         % scalaTestVersion % "test",
    "org.specs2"        %% "specs2"            % specs2Version % "test",
    "info.folone"       % "poi-scala_2.10"     % foloneVersion
  )
}

有什么建议?

最佳答案

出现冲突是因为:

  • 您已将 Scala 版本指定为 2.11
  • 您已经为reactivemongo 和poi-scala 库明确指定了Scala 版本(2.10)。

  • 修复方法是使用 %%这两个库的运算符也是如此。
    "org.reactivemongo" %% "reactivemongo" % reactiveMongoVersion,
    "info.folone"       %% "poi-scala"     % foloneVersion
    

    这就是 %% 的目的运算符(operator)。将声明的 Scala 版本(在您的情况下为 2.11)附加到工件名称。

    关于scala - 为什么会出现Conflicting cross-version suffixes的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617920/

    相关文章:

    java - 查看 SBT 发出的确切 java 命令

    scala 2.10,akka-camel TCP套接字通信

    sql - Scala 如何在使用 sqlContext 的查询中处理 isnull 或 ifnull

    scala - 在 Spark 中为 DataFrame 模式定义 DateType 转换

    scala - SBT 本地 Maven 存储库依赖

    scala - 持续调度

    scala - 将 Netty 4 与 Akka (Scala) 结合使用

    scala - 在 scala 中以参数方式保存闭包的数据结构

    scala - 为什么不应该让每个 Scala 实例变量都成为延迟初始化的变量?

    maven - 使用 gradle 发布到 Maven 时删除附加到 Artifact 名称的默认 date.time