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

IntelliJ中SBT构建Scala Spark项目遇NoClassDefFoundError问题求助

SparkSession类找不到异常解决方法

问题根源

你的spark-sql依赖配置了provided作用域,该作用域仅在编译阶段生效,运行时会依赖外部环境(如Spark集群)提供该类库。但本地直接运行时,IntelliJ不会将provided依赖纳入运行类路径,因此抛出ClassNotFoundException。

修复方案

方案1:移除provided作用域(本地调试快速解决)

修改build.sbt中的spark-sql依赖,删除% "provided"部分:

libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.3.0"

修改后执行sbt clean compile刷新依赖,本地运行即可加载Spark SQL类库。

方案2:保留provided并配置IntelliJ运行时加载(推荐,避免打包冗余)

如果需要保留provided作用域(防止打包时把Spark依赖打进JAR包),可以通过IntelliJ配置让运行时包含该依赖:

  1. 打开File → Project Structure → Modules,选中项目模块
  2. 切换到Dependencies标签,找到spark-sql依赖,将其Scope从Provided改为Compile
  3. 或者在运行配置中单独设置:
    • 打开Run/Debug Configurations,选中你的Main类运行项
    • 切换到Modifiers标签,勾选Include dependencies with "Provided" scope

额外验证

  • 确认spark-core与spark-sql版本一致(当前均为3.3.0,符合要求)
  • 执行sbt clean清理缓存后重新编译,排除依赖缓存问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:55:36