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

使用SBT导入Spark 2.2.0时出现依赖解析异常求助

解决Spark 2.2.0依赖无法解析的问题

我来帮你分析下你遇到的这个问题:sbt.librarymanagement.ResolveException: unresolved dependency: org.apache.spark#spark-core_2.12;2.2.0: not found,核心原因其实很简单——Spark 2.2.0根本就不支持Scala 2.12!

Spark从2.3.0版本才开始提供针对Scala 2.12的编译包,而2.2.0只支持Scala 2.11.x系列。你明明在build.sbt里指定了scalaVersion := "2.11.5",却出现了查找_2.12版本的错误,大概率是依赖写法或者配置冲突导致的,下面给你具体的解决步骤:

1. 修正Spark依赖的写法

在sbt中,如果你想让依赖自动匹配当前项目的Scala版本,一定要用%%而不是%。比如把你的Spark依赖改成这样:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"

这里的%%会自动根据你设置的scalaVersion := "2.11.5",转换成spark-core_2.11,也就是Spark 2.2.0支持的正确版本。

如果之前你是手动写的"org.apache.spark" % "spark-core_2.12" % "2.2.0",那直接删掉_2.12换成%%就行。

2. 检查Scala版本是否存在冲突

有时候项目的其他配置(比如project/plugins.sbt里的插件)可能会强制指定Scala 2.12,导致sbt忽略你在build.sbt里设置的版本。你可以检查下这些文件,确保没有其他地方覆盖了scalaVersion。

3. 添加可靠的仓库源

虽然Spark的依赖默认在Maven中央仓库,但偶尔会有镜像同步延迟的问题,你可以在build.sbt里加上Apache官方仓库来确保能找到依赖:

resolvers ++= Seq(
  Resolver.sonatypeRepo("snapshots"),
  "Apache Maven Repository" at "https://repo.maven.apache.org/maven2/"
)

完整的build.sbt示例

最后给你一个调整后的完整build.sbt参考(记得补上你原来的guice等依赖):

name := """play-scala-starter-example"""
version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

resolvers ++= Seq(
  Resolver.sonatypeRepo("snapshots"),
  "Apache Maven Repository" at "https://repo.maven.apache.org/maven2/"
)

scalaVersion := "2.11.5"

libraryDependencies ++= Seq(
  guice,
  // 这里用%%自动匹配Scala版本,加上Provided是因为集群环境通常已经有Spark依赖,避免打包冲突
  "org.apache.spark" %% "spark-core" % "2.2.0" % Provided
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:33:04