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

使用Scalafx遇UnsupportedClassVersionError,Java8环境下如何解决?

问题:ScalaFX依赖与Java 8版本不兼容引发版本错误

项目依赖配置如下:

ThisBuild / scalaVersion := "2.12.1"

libraryDependencies += "com.google.code.findbugs" % "jsr305" % "3.0.2"
libraryDependencies += "org.scalafx" %% "scalafx" % "22.0.0-R33"

运行时抛出异常:

java.lang.UnsupportedClassVersionError: javafx/application/ColorScheme has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0

当前项目使用Java 8(对应class文件主版本52.0),已在IntelliJ IDEA的项目结构中配置jdks\corretto-1.8.0_412,且设置了对应的JAVA_HOME,但问题仍未解决。

解决方案

  • 匹配兼容的ScalaFX版本:你用的ScalaFX 22.0.0-R33是基于Java 17编译的(class版本61.0对应Java 17),完全不兼容Java 8。Java 8需要搭配ScalaFX 8.x系列版本,比如8.0.192-R14,这个版本适配Java 8和Scala 2.12.x,修改依赖为:

    libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.192-R14"
    
  • 强制sbt使用Java 8:即使IDEA全局配置了Java 8,sbt可能默认调用系统其他版本JVM。可以在项目根目录创建.jvmopts文件,写入:

    -Djava.home=你的corretto-1.8.0_412路径
    

    或者在build.sbt里添加:

    javaHome := Some(file("jdks/corretto-1.8.0_412"))
    
  • 检查IDEA的sbt运行配置:打开Run/Debug Configurations,找到你执行的sbt任务(比如run),在Configuration标签页的JRE选项里,确认选择的是corretto-1.8.0_412,而非默认的系统JVM。

  • 清理依赖缓存:sbt可能缓存了高版本的JavaFX相关依赖,执行sbt clean reload update,或者直接删除项目下的target目录和本地缓存目录(比如~/.ivy2/cache/org.scalafx),重新拉取兼容版本的依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:56:05