【问题标题】:Unsupported class file major version 58 on Play Java Starter Example when using Ebean使用 Ebean 时 Play Java Starter Example 上不支持的类文件主要版本 58
【发布时间】:2021-02-02 16:25:17
【问题描述】:

我正在测试 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 缓存你会得到同样的错误。

【问题讨论】:

  • 您能否验证您正在使用 java 8 进行编译,也许您安装了多个 java 版本并且无意中使用了 java 14
  • 你是对的,SDK 似乎自动在 Mac 上使用最新版本的 OpenJDK——即使 Oracle Java 8 是 VirtualMachines 文件夹中唯一的 JDK 也没关系

标签: playframework playframework-2.2


【解决方案1】:

在格式化我的硬盘后认为我疯了,事实证明最新版本的 SBT 使用 OpenJDK 14(或最新版本)进行编译或注入。我相信是这种情况,因为 Oracle JKD 在面向公众的存储库中不再可用,但需要创建一个 Oracle 帐户来下载他们的 JDK。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 2019-07-27
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多