当我使用 sbt 在我的项目上执行任务 compile
时,我收到以下错误消息:
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn] * org.typelevel:cats-core_2.12:1.0.0-MF is selected over 0.9.0
[warn] +- default:pathservice_2.12:0.1 (depends on 1.0.0-MF)
[warn] +- io.circe:circe-core_2.12:0.8.0 () (depends on 0.9.0)
[warn] +- co.fs2:fs2-cats_2.12:0.3.0 (depends on 0.9.0)
[warn] Run 'evicted' to see detailed eviction warnings
[info] Compiling 3 Scala sources to /home/developer/Desktop/microservices/backup-industry/PathService/target/scala-2.12/classes ...
[info] Done compiling.
这是什么意思?
最佳答案
这意味着您有不同的依赖项,每个依赖项都使用同一库的不同版本。也就是说,circe 和 fs2 依赖于cats 0.9.0,其中pathservice 依赖于1.0.0-MF。
现在,由于 .ivy 的工作方式,最新版本的依赖项总是在运行时选择和加载。这意味着,例如,如果 circe 依赖于cats 0.9.0 中的公共(public)方法foo
,并且在cats 1.0.0-MF 中不再可用(发出的字节码不同),您的程序将抛出异常在运行时尝试调用 foo
,因为 1.0.0-MF 没有它。
关于scala - 版本冲突 : some are suspected to be binary incompatible,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46825028/