【发布时间】:2020-08-28 13:35:06
【问题描述】:
我使用 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)
【问题讨论】:
-
你能澄清一下吗?应用程序运行,但在 SceneBuilder 中打开 FXML 文件时出现此错误?您可以自己打开 SceneBuilder(即只运行它,而不打开文件)吗?这听起来就像您尝试使用错误的 JDK 运行 SceneBuilder。
-
是的,应用程序运行没有问题,我只在尝试使用 SceneBuilder 编辑它时收到错误消息。 SceneBuilder 本身也可以正常工作,我什至可以编辑新创建的 FXML 文件 - 我只是无法编辑已经编译的文件。
-
在我的 Mac 上(不确定如何在 Windows 上进行等效操作),我可以右键单击 SceneBuilder 应用程序并选择“显示包内容”,它会显示应用程序的结构。如果我在那里挖掘(
/Contents/Plugins/Java.runtime/Contents/Home/bin,尽管这取决于平台)我可以找到java可执行文件,并从那里验证 SceneBuilder 是否正在使用 Java 11 运行。如果您有自定义组件,我假设 SceneBuilder 会加载相关的类,这将导致您看到的错误,原因很明显。 -
所以...我想,尝试自己构建 SceneBuilder (github.com/gluonhq/scenebuilder) 以便可以在 JDK14 下运行它?这似乎有点像大锤解决方案......
-
由于您熟悉
jpackage,如果您可以从SceneBuilder exe中提取jar文件,您可以使用JDK14和JavaFX 14重新打包并创建一个新的SceneBuilder exe。然后将 IntelliJ 配置为指向重新打包的 SceneBuilder。不过,似乎应该有一个更简单的解决方案......
标签: java intellij-idea javafx scenebuilder