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

执行Scala Jar包时遇NoClassDefFoundError: scala/Product$class问题求助

问题:执行Scala Jar包时抛出NoClassDefFoundError: scala/Product$class

执行Scala代码打包的Jar包时,遇到错误:

NoClassDefFoundError: scala/Product$class

其根源为ClassNotFoundException: scala.Product$class

环境版本信息

  • Scala 2.12
  • SBT 1.7.1
  • Spark 3.1.2
  • JDK 1.8.0_331

项目sbt.build依赖配置

"org.apache.spark" %% "spark-core" % "3.1.2" %"provided",
"org.apache.spark" %% "spark-sql" % "3.1.2" %"provided",
"commons-validator" % "commons-validator" % "1.6",
"org.elasticsearch" %% "elasticsearch-spark-20" % "7.14.1",   
"com.github.pureconfig" %% "pureconfig" % "0.12.3",
"org.rogach" %% "scallop" % "3.5.0",
"com.github.dwickern" %% "scala-nameof" % "1.0.3" ,
"com.sksamuel.elastic4s" %% "elastic4s-core" % "7.14.1",
"com.sksamuel.elastic4s" %% "elastic4s-client-esjava" % "7.14.1",
"com.sksamuel.elastic4s" %% "elastic4s-http-streams" % "7.14.1",
"com.sksamuel.elastic4s" %% "elastic4s-testkit" % "7.14.1" % "test",
"com.databricks" % "dbutils-api_2.11" % "0.0.4"

解决方案

1. 修复跨Scala版本依赖冲突

注意到com.databricks" % "dbutils-api_2.11" % "0.0.4"是基于Scala 2.11编译的,与项目使用的Scala 2.12版本不兼容,这会导致类加载时出现scala.Product$class找不到的问题。将该依赖替换为匹配Scala 2.12的版本:

"com.databricks" %% "dbutils-api" % "0.0.4"

使用%%会自动匹配项目的Scala版本,确保依赖是对应2.12的编译版本。

2. 调整打包合并策略(若使用sbt assembly)

如果用sbt assembly打包,需配置assembly插件处理重复类的合并,避免Scala核心类冲突:

assemblyMergeStrategy in assembly := {
  case PathList("scala", "Product$class") => MergeStrategy.first
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

3. 确认运行时ClassPath包含Scala核心库

  • 若通过Spark集群运行:确保集群环境使用的Scala版本与项目一致(Spark 3.1.2默认适配Scala 2.12,无需额外配置)。
  • 若本地单独运行Jar包:需将Scala 2.12的核心库加入运行命令的ClassPath,例如:
java -cp "your-jar.jar:/path/to/scala-library-2.12.x.jar" your.main.Class

4. 清理重构项目

执行以下命令清理旧构建文件,重新编译打包:

sbt clean
sbt compile
sbt assembly # 或你使用的其他打包命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:15:51