当前位置: 首页 > 知识库问答 >
问题:

在IDEA中使用SceneBuilder和JavaFX 11

史旺
2023-03-14

我正在使用IDEA(与OpenJDK 11一起使用),并且我正在尝试使用SceneBuilder来显示我的FXML文件。它可以工作,除非我使用继承的JavaFX组件,例如:

public class MyLabel extends Label {
    public MyLabel(){
        super();
        setText("42");
    }
}

我总是得到一个错误:

java.lang.UnsupportedClassVersionError: sample/MyLabel has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

共有1个答案

房新翰
2023-03-14

如果IntelliJ的embedded Scene Builder版本是8.2,那么您就不能期望它能够“呈现”为大于8(级别52)的Java版本编译的类路径中的任何类。

embedded Scene Builder只是另一个运行的Java应用程序,基本上是一个运行在IntelliJ编辑器之上的Swing组件中的JavaFX应用程序。

Java 8

为了处理使用内置控件的常规FXML文件,Scene Builder使用JDK将jfxrt.jar加载到类路径。

如果您使用Java8创建了自己的自定义控件(这个问题有一个很好的示例来说明如何这样做),并且您没有编译项目,那么当您尝试Scene Builder时,您将得到一个ClassNotFoundException,因为控件不在类路径中,而Scene Builder不知道如何处理它。

Java 11

当您使用Java11创建自定义控件时,正如您所知,不再有jfxrt.jar

按照入门文档,您需要向项目添加JavaFX11 SDK和VM选项

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

有什么办法让它起作用吗?如前所述,您所需要做的只是将控件加载到类路径中,但使用52级。

因此,您所需要做的就是在project Structure->project->project Language level中将项目的目标级别设置为1.8

现在重新构建您的项目,您将能够看到带有嵌入式场景构建器的自定义控件:

由于您的项目现在与Java8兼容,您可以验证您将能够运行:

/path-to-java-8/java -jar out/production/Custom_jar/Custom.jar

无论如何,如果你不想要那个级别,你当然可以保留Java11,使用独立的场景构建器11。

 类似资料:
  • 每当我试图打开我的fxml文件中的SceneBuilder选项卡时,我会得到一个错误,说它无法在Scene Builder中打开该文件,以及下面的异常: 问题是,我可以在文件中执行操作,而不会出现任何错误。 我使用Windows10上的IntelliJ IDEA 2019.3和Azul Zulu作为我的JDK和JavaFX SDK库。 有什么办法可以解决吗?

  • 我是JavaFx的新手,我正在使用Intellij和SceneBuilder。我创建了一个MVC模型: PersonOverview和RootLayout由SceneBuilder生成。 个人概述:

  • 我打算再试一次。。。我是Scenebuilder的新手,我正在尝试为我的项目创建一个照片库!我已经添加了我想要的,那就是一个图像视图,其中的图像是从FileChooser中选择的。。。但是现在我想得到一个建议,如何保存这个,并在每次按下addPhoto按钮时创建一个新的,而不是覆盖我在ImageView中已经有的。以下是我的addPhoto按钮代码: FXML代码:

  • 我试图用一些随机信息创建一个简单的LineChart,但当我试图通过SceneBuilder使用fxml文件创建时,图表显示了但从未填充。每当我手动创建vbox、linechart和scene时,一切工作都很好。我真的很困惑,在使用fxml文件时,图表代码应该去哪里。

  • 如有任何帮助,我们将不胜感激。 谢谢你!

  • 我有一个JavaFX项目,其中有几个.fxml文件。我曾经通过右键单击这些文件并选择“open with SceneBuilder”来打开这些文件。可能经过一些操作系统维护之后,SceneBuilder就不会再启动了。没有出现错误消息,只是没有发生任何事情。我在Xubuntu16.04下工作,在Eclipse Neon和Eclipse Oxygen上有相同的行为,后者有新的安装。SceneBuil