Playframework 使用Ebean时播放Java初学者示例上不支持的类文件主版本58

Playframework 使用Ebean时播放Java初学者示例上不支持的类文件主版本58,playframework,playframework-2.2,Playframework,Playframework 2.2,我正在测试Play,正在使用Oracle Java 1.8。当我下载Play Java Starter示例并使用单个模型启用Ebean时,我得到一个: 不支持的类文件主版本58 错误。在我的plugins.sbt上,我有: addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1") addSbtPlugin("com.typesafe.sbt" % "

我正在测试Play,正在使用Oracle Java 1.8。当我下载Play Java Starter示例并使用单个模型启用Ebean时,我得到一个:

不支持的类文件主版本58

错误。在我的plugins.sbt上,我有:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "6.0.0")
我使用游戏中的所有默认设置。这在以前是可行的,但到最近它已经不起作用了。我相信“guice”或“Ebean的注入”或依赖项是用Java14编译的。此外,当我在JavaOptions中放置以下内容时:

    javacOptions ++= Seq(
      "-source", "1.8", "-target", "1.8",
      ...

编译器中断,说有使用Java14编译的代码。还有其他人有这个问题吗?到目前为止,我已经尝试了Play框架、Ebean、Scala和其他版本的不同排列。我相信如果你清除sbt和gradle缓存,你会得到同样的错误。

在格式化我的硬盘驱动器后,我认为我疯了,结果发现最新版本的sbt使用OpenJDK 14(或最新版本)进行编译或注入。我认为这是因为Oracle JKD不再在面向公众的存储库中可用,而是需要创建一个Oracle帐户来下载他们的JDK


最好的解决方案是在终端上设置$JAVA_HOME(即:将其添加到.bashrc),以强制SBT使用首选的JDK。任何其他方式都会导致SBT使用最新的OpenJDK版本。

您是否可以验证您是使用java 8编译的,或者您安装了多个java版本,并且无意中使用了java 14您是正确的,SDK似乎自动地在Mac上使用了最新版本的OpenJDK——即使OracleJava8是VirtualMachines文件夹中唯一的JDK也无关紧要