问题描述
我已经使用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个答案...
- 您的intellij使用的Java版本较旧(范围从6到13)。因此,您需要允许intellij使用Java的较新版本(JDK14)。
- 使用Java的较早版本构建应用程序,当然,由于Java的较早版本,您可能需要更改某些功能。
我想说的是您的自定义组件。您可能已经使用Java 14对其进行了编译,并将生成的jar放入SceneBuilder。因此,每次加载使用这些组件之一的FXML文件时,都会收到该错误消息,因为组件的类文件版本比SceneBuilder本身的版本还年轻。出于兼容性原因,最好还是使用目标11编译组件。您可以使用Java 14编译器来实现。通常,这将增加兼容性,并解决您遇到的问题。