我正在尝试从JavaFx应用程序中启动JavaFx应用程序,但看起来Application.launch()只能被调用一次。这是否意味着我必须启动一个单独的JVM ...就像在exec中那样(“java ......还是有另一种方式?
更多背景信息。我希望我的JavaFx应用程序能够构建和运行JavaFx应用程序。现在它在内存中编译类,加载类......真的很遗憾不得不求助于将所有内容写入文件系统,这样我就可以在文件系统上获得一个jar,所以我可以使用exec来启动它。
作为第二个问题......有没有办法打开另一个JavaFx窗口并获取舞台并将其传递给我新编译和加载的Application子类?
答案 0 :(得分:16)
如果要在同一个JVM中执行另一个JavaFX应用程序,只需创建它的实例,手动创建Stage
并调用Application#start()
public void runAnotherApp(Class<? extends Application> anotherAppClass) throws Exception {
Application app2 = anotherAppClass.newInstance();
Stage anotherStage = new Stage();
app2.start(anotherStage);
}
N.B。:如果你在另一个应用程序中使用标准初始化的特殊功能,它将不起作用,例如: Application.init()
或Application.getParameters()