我正在尝试将程序从java 8迁移到java 9。
在我的程序中,我找到了以下代码。
//Run JavaFX Application Thread/Toolkit
PlatformImpl.startup(() -> {
});
它尝试启动JavaFX Toolkit
不幸的是,java 9中不再支持PlatformImpl.startup。
有哪种替代品呢?
如何启动JavaFX Toolkit?
谢谢
答案 0 :(得分:3)
startup()
方法是Java 9发行版中从非公共类PlatformImpl
升级到公共API Platform
类的方法之一。现在已完整记录在API documentation。
因此,Java 9中的等效调用是
Platform.startup(() -> { });
请注意,此方法的用例非常少见,API文档会花些时间来强调这一点:
通常,没有必要显式调用此方法,因为它是由大多数JavaFX应用程序的构建方式调用的。
...
如上所述,通常会自动启动JavaFX Application Thread。重要的是,只有在JavaFX运行时尚未初始化时才调用此方法。自动启动JavaFX运行时的情况包括:
对于扩展
Application
的标准JavaFX应用程序,并使用Java启动程序或Application
类中的一个启动方法来启动应用程序,启动程序会自动初始化FX运行时<{1}}类已加载。
- 对于使用
Application
显示FX内容的Swing应用程序,在构建第一个JFXPanel
实例时初始化FX运行时。- 对于使用
JFXPanel
显示FX内容的SWT应用程序,在构建第一个FXCanvas
实例时初始化FX运行时。 当应用程序不遵循任何这些常用方法时,开发人员有责任通过调用此启动方法手动启动JavaFX运行时。当JavaFX运行时已经运行时调用此方法将导致抛出
FXCanvas
- 它仅对请求JavaFX运行时启动一次有效。
因此,当您正在进行更改时,您需要将应用程序更新为兼容Java 9,您可能需要仔细考虑是否需要调用IllegalStateException
;也许有一种更标准,更健壮的方法来启动你的JavaFX应用程序。