我正在测试 Play,正在使用 Oracle Java 1.8。当我下载 Play Java Starter 示例并使用单个模型启用 Ebean 时,我得到:
Unsupported class file major version 58
错误。在我的 plugins.sbt 我有:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.1")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "6.0.0")
并且正在使用 Play 中的所有默认设置。这曾经有效,但截至最近它不起作用。我相信“guice”或“Ebean 的注入”或依赖项已用 Java 14 编译。此外,当我在 JavaOptions 中放置以下内容时:
javacOptions ++= Seq(
"-source", "1.8", "-target", "1.8",
...
编译器中断说有用 Java 14 编译的代码。还有其他人遇到这个问题吗?到目前为止,我已经尝试了 Play Framework、Ebean、Scala 和其他版本的不同排列。我相信如果你清除你的 sbt 和 gradle 缓存,你会得到同样的错误。
格式化我的硬盘后,我以为我疯了,事实证明最新版本的 SBT 使用 OpenJDK 14(或最新版本)进行编译或注入。我相信这是因为 Oracle JKD 在面向公众的存储库中不再可用,但需要创建一个 Oracle 帐户才能下载他们的 JDK。
最好的解决方案是在您的终端上设置 $JAVA_HOME(即:将其添加到 .bashrc)以强制 SBT 使用您首选的 JDK。任何其他方式都将导致 SBT 使用最新的 OpenJDK 版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句