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

问题描述

我已经使用JLink + JPackage将JavaFX应用程序构建为一个独立的应用程序。我正在使用JDK14。但是,当我尝试在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对其进行了编译,并将生成的jar放入SceneBuilder。因此,每次加载使用这些组件之一的FXML文件时,都会收到该错误消息,因为组件的类文件版本比SceneBuilder本身的版本还年轻。出于兼容性原因,最好还是使用目标11编译组件。您可以使用Java 14编译器来实现。通常,这将增加兼容性,并解决您遇到的问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...