必须安装JDK 11+(非JRE),再用Coursier安装Scala 3(如cs install scala:3.3.3),并注意大数据生态(Spark/Kafka等)仍普遍不支持Scala 3字节码与语法。

必须先装 JDK 11 或更高版本,否则 scala 命令根本跑不起来——Scala 3 不再支持 JDK 8,这点和 Scala 2.x 完全不同。
确认并安装 JDK 11+(不是 JRE)
Scala 3 编译器(dotty)依赖 JDK 的完整工具链,只装 jre 或低版本 JDK 会直接报 NoClassDefFoundError 或 UnsupportedClassVersionError。
- 检查当前 Java:运行
java -version和javac -version,两个输出都得是 11、17 或 21(LTS 版本最稳) - 没装或版本太低:Ubuntu/Debian 用
sudo apt install openjdk-17-jdk;CentOS/RHEL 用sudo dnf install java-17-openjdk-devel - 手动解压 JDK 的用户,务必把
JAVA_HOME指向 JDK 根目录(含bin/javac),不是jre/子目录 - 验证:
echo $JAVA_HOME应非空,且$JAVA_HOME/bin/javac可执行
用 Coursier 安装 Scala 3(推荐方式)
官方已弃用传统二进制包分发,coursier 是目前最轻量、版本管理最干净的方式,能自动处理 Scala 3 的 scalac、scala REPL 和 scaladoc。
- 下载并安装
cs:对 x86_64 机器,执行curl -fL https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setup - 它会自动检测
JAVA_HOME,并把scala、scalac软链接到~/.local/bin/;记得把这个路径加进PATH(比如写入~/.bashrc) - 验证:
scala -version应输出类似Scala code runner version 3.3.3(而非2.13.x) - 注意:别用
cs install scala@3这种写法——它默认装的是旧版,应明确指定cs install scala:3.3.3(查最新版见 GitHub releases)
Scala 3 在大数据环境中的实际使用要点
Spark 3.0+ 才开始实验性支持 Scala 3 编译的 UDF,但生产集群几乎都还在用 Scala 2.12/2.13。直接在 YARN 或 Flink 上提交 Scala 3 程序极易因反射失败或字节码不兼容崩溃。
- 开发阶段可用 Scala 3 写逻辑,但最终打包时得用
scalac编译成与 Spark 兼容的字节码(需显式加-target:jvm-11参数) - Spark Shell(
spark-shell)本身仍是 Scala 2.x 启动的,不能直接输入 Scala 3 语法(比如def f(x: Int): Int = x * 2会报错,得写成老式def f(x: Int) = x * 2) - 真正要跑通,得用
sbt+scalaVersion := "3.3.3"+libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.5.0" % "provided",且避免使用 Scala 3 特有语法(如枚举、given/using) - Confluent Kafka、Delta Lake 等周边生态库,绝大多数尚未发布 Scala 3 兼容版,依赖项里出现
_2.13后缀就说明不支持
真正卡住人的地方往往不是安装步骤,而是误以为装完 scala -version 显示 3.x 就万事大吉——JDK 版本、sbt 插件兼容性、以及大数据组件自身的字节码约束,三者缺一不可。尤其别在没验证 Spark 集群 classpath 的情况下,直接把本地编译的 Scala 3 jar 提交上去。



















