4

我正在尝试从 JavaFx 应用程序中启动 JavaFx 应用程序,但看起来 Application.launch() 只能调用一次。这是否意味着我必须启动一个单独的 JVM... 如 exec("java... 或有其他方法?

更多背景信息。我希望我的 JavaFx 应用程序能够构建和运行 JavaFx 应用程序。现在它在内存中编译类,加载类......真的很不​​幸不得不求助于将所有内容写入文件系统,这样我就可以在文件系统上获得一个 jar,所以我可以使用 exec 来启动它。

作为第二个问题......有没有办法打开另一个JavaFx窗口并获取舞台并将其传递给我新编译和加载的应用程序子类?

4

1 回答 1

17

如果您想在同一个 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);
}

注意:如果您在另一个应用程序中使用标准初始化的特殊功能,它将不起作用,例如,Application.init()Application.getParameters()

于 2012-11-18T10:54:21.593 回答