ignite-spark依赖冲突导致Ignite-Scala sbt项目无法运行如何解决
问题根因
你遇到的跨版本后缀冲突是因为引入的ignite-spark_2.10基于Scala 2.10编译,它传递依赖的所有Spark、JSON4S等组件也都是Scala 2.10版本,和项目中指定的Scala 2.11版本的同类组件产生了版本冲突。
同时你之前的依赖有两个明显错误:
- ignite-spark的版本号和你使用的Ignite核心版本不一致:你其他Ignite依赖都是2.10.0,但是ignite-spark写了2.3.0(和Spark版本混淆)
- 硬编码的Scala后缀和项目Scala版本不匹配:你项目Scala版本是2.11,但是依赖后缀写了_2.10
解决步骤
- 先删除build.sbt中错误的ignite-spark依赖配置:
libraryDependencies += "org.apache.ignite" % "ignite-spark_2.10" % "2.3.0"
- 替换为正确的匹配版本依赖,以下两种写法二选一即可:
- 写法1:手动指定适配的Scala后缀和Ignite版本
libraryDependencies += "org.apache.ignite" % "ignite-spark_2.11" % "2.10.0"- 写法2:用sbt双百分号自动匹配项目Scala版本,避免手动写后缀出错
libraryDependencies += "org.apache.ignite" %% "ignite-spark" % "2.10.0" - (可选)如果仍存在Spark版本冲突,可排除ignite-spark传递的Spark依赖,强制使用项目定义的Spark 2.3.0版本:
libraryDependencies += "org.apache.ignite" %% "ignite-spark" % "2.10.0" excludeAll ( ExclusionRule(organization = "org.apache.spark") )
- 重新执行sbt同步即可解决冲突。
内容的提问来源于stack exchange,提问作者Smera
相关产品推荐
相关产品推荐

