如何在不调用System.exit()的情况下杀死JavaFX Platform线程?

时间:2018-10-29 03:52:35

标签: java javafx java-threads

我正在为我们的旗舰应用程序使用JavaFX编写一个插件工具(正在工作)。旗舰应用程序具有一个使用Swing的Java客户端,它允许用户执行用Java编写的宏,或安装用Java编写的插件。

请注意,这些宏/插件可以独立运行,并且不依赖Java客户端,因此无需将JavaFX组件放入JFXPanel。

我们遇到的问题是调试便利性之一。我们运行使用JavaFX的宏或插件,并在杀死它(使用stop()和Platform.exit())之后,必须重新启动Flagship App Java客户端(即JVM),然后才能重新运行JavaFX。 JavaFX宏/插件,这归因于整个“应用程序启动不得被多次调用”错误。旗舰应用程序的加载速度相对较快,但要完全加载并打开新文件仍需要一两分钟的时间(如果没有打开的文件,则无法运行宏或插件)。

因此,我看到了一些建议,可以place subsequent calls到Application.launch()into a runLater call,或使用Executor service,但这些建议似乎都无法真正解决我的问题需要,因为平台线程似乎被杀死(JavaFX GUI正确关闭,并且该线程从正在运行的线程列表中消失)。就像当您调用Application.launch()时,JVM好像具有一个设置为true的布尔值一样,这样就无法在不终止JVM的情况下重新启动JavaFX应用程序。

我需要能够在同一JVM上多次运行JavaFX Application。这样有可能吗?

1 个答案:

答案 0 :(得分:0)

您是否可以使用Stage而不是Application来定义JavaFX宏?如果是这样,则此视频协调了一个主Swing应用程序的关闭,该应用程序会打开多个JavaFX窗口。

https://www.youtube.com/watch?v=1cobvRlRHic

相关问题