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

Scala 2.13.11开发插件遇NoClassDefFoundError问题求助

错误原因与解决方法:java.lang.NoClassDefFoundError: scala/Serializable

错误原因

  • 核心问题是SBT插件开发使用的Scala版本与SBT运行时依赖的Scala版本不兼容。SBT本身基于特定版本Scala构建:旧版SBT(如0.13.x系列)依赖Scala 2.10,新版SBT(1.x系列)主要依赖Scala 2.12(SBT 1.10+开始支持Scala 2.13)。
  • 你用Scala 2.13.11开发插件,但教程基于的Scala 2.10.4对应旧版SBT,导致编译后的插件类依赖2.13的Scala库,而SBT运行时加载的是自带的旧版本Scala库,无法找到scala.Serializable类(或类结构不匹配)。

解决方法

1. 匹配SBT版本与Scala版本

先明确当前使用的SBT版本,选择对应兼容的Scala版本:

  • SBT 0.13.x → Scala 2.10.x
  • SBT 1.0.x ~ 1.9.x → Scala 2.12.x
  • SBT 1.10+ → 支持Scala 2.13.x

2. 调整插件项目配置

在插件项目的build.sbt中修改配置:

  • 若使用SBT 1.x(非1.10+):
    sbtPlugin := true
    scalaVersion := "2.12.17" // 匹配当前SBT对应的Scala版本,可根据实际SBT版本调整
    
  • 若使用SBT 1.10+并坚持用Scala 2.13.11:
    sbtPlugin := true
    scalaVersion := "2.13.11"
    ThisBuild / scalacOptions ++= Seq("-Xsource:3") // 启用Scala 2.13插件支持
    

3. 清理重构项目

删除项目下的target目录和本地.sbt缓存目录,然后重新执行:

sbt compile

确保清理残留的旧版本编译文件,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:38:34