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

Windows环境下Scala Play Framework初始运行报NoClassDefFoundError求助

解决Windows上运行Play Scala Starter示例时的java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter错误

这个问题我之前帮不少开发者排查过,核心原因不是Windows系统本身,而是你使用的Java版本和Play Framework版本的兼容性问题——Java 9及以后的版本默认移除了JAXB(Java Architecture for XML Binding)相关模块,而Play的一些旧版starter项目依赖这个模块,所以启动时会找不到类。下面给你几个可行的解决方案:

方案一:切换到Java 8运行(最稳妥)

Java 8是Play旧版项目的官方推荐环境,完全不会有这个依赖缺失问题:

  • 如果你还没安装Java 8,先下载适配Windows的JDK 8版本并完成安装
  • 在IntelliJ中配置项目JDK:
    1. 打开File > Project Structure
    2. 在Project Settings > Project里,把Project SDK切换为已安装的JDK 8
    3. 切换到Modules标签,确保所有模块的SDK也设置为JDK 8
  • 命令行运行前,先检查终端的Java版本:
    1. 执行java -version确认版本,如果不是8,就把JAVA_HOME环境变量改为JDK 8的安装路径,然后重启终端
    2. 重新执行sbt run启动项目

方案二:Java 9+环境下手动添加JAXB依赖

如果不想切换Java版本,可以直接在项目中补全缺失的依赖:

  • 打开项目根目录的build.sbt文件
  • 在libraryDependencies中追加以下依赖:
    libraryDependencies ++= Seq(
      "javax.xml.bind" % "jaxb-api" % "2.3.1",
      "com.sun.xml.bind" % "jaxb-core" % "2.3.0.1",
      "com.sun.xml.bind" % "jaxb-impl" % "2.3.3"
    )
    
  • 保存文件后,先执行sbt clean compile清理并重新编译项目,再启动sbt run

方案三:升级Play Framework版本(长期适配)

如果项目允许,升级到适配Java 9+的Play版本也是一劳永逸的办法:

  • 打开project/plugins.sbt文件,找到这一行:addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "x.x.x")
  • 把版本号替换为最新的稳定版(比如2.8.x及以上)
  • 执行sbt update拉取新的依赖,然后重新启动项目

额外排查小技巧

  • 可以通过sbt 'show scalaVersion'和sbt 'show javaHome'确认项目当前使用的Scala和Java环境,确保版本匹配
  • 如果IntelliJ仍然报错,尝试File > Invalidate Caches... > Invalidate and Restart,清除缓存后重新加载项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:43:51