文件已由更新版本的 Java 运行时错误 SceneBuilder 编译

File has been compiled by a more recent version of the Java Runtime error SceneBuilder

我使用 JLink + JPackage 将 JavaFX 应用程序构建为独立应用程序。我正在使用 JDK 14。但是,当我尝试在 IntelliJ 的 Scenebuilder 中打开我的 FXML 文件之一时,出现此错误:

File has been compiled by a more recent version of the Java Runtime (class file version 58.0), this version of the Java Runtime only recognizes class file versions up to 55.0.

对于运行开发环境中的应用,我使用mvn clean javafx:run

当我检查 IDE 的编译器设置时,JDK 正确设置为 14,JAVA_HOME 变量也是如此,如下所示。我该如何解决这个问题?

PS C:\dev> java --version
openjdk 14.0.2 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

我认为(我不是 100% 确定,但这是有道理的)对此有 2 个答案...

  1. 您的 intellij 使用的是 java 的旧版本(范围从 6 到 13)。所以你需要允许 intellij 使用更新版本的 java (JDK14).
  2. 使用旧版本的 java 构建您的应用程序,当然您可能需要更改一些功能,因为旧版本的 java。

我会说问题出在您的自定义组件上。您可能已经使用 Java 14 编译了它们并将生成的 jars 放入 SceneBuilder 中。因此,每次加载使用这些组件之一的 FXML 文件时,您都会收到该错误消息,因为组件的 class 文件版本低于 SceneBuilder 本身的版本。出于兼容性原因,无论如何,使用目标 11 编译您的组件是个好主意。您可以使用 Java 14 编译器来做到这一点。这通常会增加兼容性并解决您手头的问题。