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

Scala依赖中Cats库跨版本后缀冲突问题求助

解决Scala项目中Cats组件跨版本后缀冲突问题

冲突本质

org.typelevel的cats-kernel和cats-core属于同一系列组件,必须保持完全一致的版本号(包括不能存在预发布后缀如-M1、-RC1的差异),否则会因二进制不兼容触发冲突。

解读sbt evicted输出要点

  1. 找到输出中[warn] Found version conflict(s) in library dependencies:的警告区块
  2. 定位org.typelevel:cats-kernel和org.typelevel:cats-core的条目,查看Evicted from列,确认是哪些第三方依赖引入了不同版本的组件
  3. 重点关注输出末尾的Latest version found和Override using提示,sbt会给出推荐的统一版本号

具体解决步骤

  • 强制统一版本:在项目的build.sbt中添加dependencyOverrides,指定统一的稳定版本(替换为你需要的版本号):

    dependencyOverrides ++= Seq(
      "org.typelevel" %% "cats-kernel" % "2.10.0",
      "org.typelevel" %% "cats-core" % "2.10.0"
    )
    

    确保两个组件的版本完全一致,不要带任何预发布后缀。

  • 排查冲突依赖:如果强制版本后仍有问题,根据sbt evicted的结果找到引发冲突的第三方依赖:

    1. 优先升级该第三方依赖到支持你指定Cats版本的最新版
    2. 若无法升级,直接排除该依赖中的Cats组件:
      libraryDependencies += "com.example" %% "problem-library" % "x.y.z" exclude ("org.typelevel", "cats-kernel") exclude ("org.typelevel", "cats-core")
      
  • 验证修复:执行sbt clean compile编译项目,再运行sbt evicted确认冲突警告消失。

报错堆栈对应

如果报错包含java.lang.NoSuchMethodError、IncompatibleClassChangeError等二进制兼容异常,基本可以确定是版本不匹配导致,按上述步骤处理即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:52:01