You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala3+SBT项目添加Akka HTTP相关依赖时遇依赖解析失败错误

Scala 3 + Akka HTTP项目依赖解析失败问题排查

我用Scala 3和SBT构建Akka HTTP项目,原本运行正常,但添加一批新依赖后出现依赖解析失败,提示找不到对应文件和仓库资源。我尝试给每个新依赖添加.cross(CrossVersion.for3Use2_13)配置,但问题依旧。

新增的依赖代码

("com.typesafe.scala-logging" %% "scala-logging"   % "3.9.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-circe"          % "1.27.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-json4s"         % "1.22.0").cross(CrossVersion.for3Use2_13),
("com.jason-goodwin" %% "authentikat-jwt"          % "0.4.5").cross(CrossVersion.for3Use2_13),
("org.json4s"        %% "json4s-native"            % "3.6.1").cross(CrossVersion.for3Use2_13),
("io.circe"          %% "circe-generic"            % "0.11.1").cross(CrossVersion.for3Use2_13),
("org.slf4j"         %% "slf4j-simple"             % "1.7.25").cross(CrossVersion.for3Use2_13),

完整build.sbt代码

lazy val akkaHttpVersion = "10.6.3"
lazy val akkaVersion    = "2.9.4"

resolvers += "Akka library repository".at("https://repo.akka.io/maven")

fork := true

lazy val root = (project in file(".")).
  settings(
    inThisBuild(List(
      organization    := "com.example",
      scalaVersion    := "3.3.3"
    )),
    name := "eskimi-bidding-agent",
    libraryDependencies ++= Seq(
      "com.typesafe.akka" %% "akka-http"                % akkaHttpVersion,
      "com.typesafe.akka" %% "akka-http-spray-json"     % akkaHttpVersion,
      "com.typesafe.akka" %% "akka-actor-typed"         % akkaVersion,
      "com.typesafe.akka" %% "akka-stream"              % akkaVersion,
      "com.typesafe.akka" %% "akka-pki"                 % akkaVersion,
      ("com.typesafe.scala-logging" %% "scala-logging"   % "3.9.0").cross(CrossVersion.for3Use2_13),
      ("de.heikoseeberger" %% "akka-http-circe"          % "1.27.0").cross(CrossVersion.for3Use2_13),
      ("de.heikoseeberger" %% "akka-http-json4s"         % "1.22.0").cross(CrossVersion.for3Use2_13),
      ("com.jason-goodwin" %% "authentikat-jwt"          % "0.4.5").cross(CrossVersion.for3Use2_13),
      ("org.json4s"        %% "json4s-native"            % "3.6.1").cross(CrossVersion.for3Use2_13),
      ("io.circe"          %% "circe-generic"            % "0.11.1").cross(CrossVersion.for3Use2_13),
      ("org.slf4j"         %% "slf4j-simple"             % "1.7.25").cross(CrossVersion.for3Use2_13),
      "ch.qos.logback"    % "logback-classic"           % "1.2.11",

      "com.typesafe.akka" %% "akka-http-testkit"        % akkaHttpVersion % Test,
      "com.typesafe.akka" %% "akka-actor-testkit-typed" % akkaVersion     % Test,
      "org.scalatest"     %% "scalatest"                % "3.2.12"        % Test
    )
  )

可能的问题点及修复方案

1. Java库错误使用%%声明

slf4j-simple是纯Java库,没有Scala版本专属包,你用%%会自动给依赖名加上Scala版本后缀(比如slf4j-simple_3.3.3),但仓库里根本没有这个包。

修复:把%%改成%,且不需要cross配置:

"org.slf4j" % "slf4j-simple" % "1.7.25"

2. 依赖版本过旧,无Scala 2.13兼容包

你选的部分依赖版本太老,甚至没发布Scala 2.13版本:

  • authentikat-jwt 0.4.5:2017年最后更新,仅支持Scala 2.12,没有Scala 2.13包,用cross配置也找不到。
  • circe-generic 0.11.1:2018年版本,不支持Scala 2.13。

修复:替换为支持Scala 2.13/Scala 3的新版本或替代库:

  • 替换authentikat-jwt:改用jwt-scala(支持Scala 3):
    "com.github.jwt-scala" %% "jwt-core" % "9.4.0"
    
  • 更新circe到兼容版本:
    "io.circe" %% "circe-generic" % "0.14.6"
    

3. Akka HTTP与JSON扩展版本不匹配

akka-http-circe和akka-http-json4s的版本必须和Akka HTTP版本对应:

  • akka-http-circe 1.27.0仅支持Akka HTTP 10.2.x,完全不兼容你用的10.6.3。
  • akka-http-json4s 1.22.0同样只支持旧版Akka HTTP。

修复:使用和Akka HTTP版本同步的官方JSON扩展:

"com.typesafe.akka" %% "akka-http-circe" % akkaHttpVersion

这个版本天然支持Scala 3,无需额外配置。

4. CrossVersion配置使用不当

用cross(CrossVersion.for3Use2_13)时,部分库用%%会导致SBT解析路径错误。对于需要用Scala 2.13版本的库,建议直接指定Scala 2.13包名:

"com.typesafe.scala-logging" % "scala-logging_2.13" % "3.9.0"

避免%%和cross配置的冲突。

5. 日志实现依赖冲突

你同时加了slf4j-simple和logback-classic,两者都是SLF4J的实现,同时存在会导致冲突。建议只保留一个(通常选logback-classic更灵活)。


内容的提问来源于stack exchange,提问作者Vakindu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:14:54