为什么start()已存在时,JavaFX Application中使用的main方法

JavaFX应用程序的起点是start方法。 但是在示例JavaFX应用程序中,还包括一个主要方法。 在这种特殊情况下main方法的用途是什么?为什么需要将start()定义为JavaFX的起点。 难道我们不能简单地使用main方法来定义像Swings这样的起点吗?

示例HelloWorld应用程序:

public class HelloWorld extends Application { @Override public void start(Stage primaryStage) { Button btn = new Button("Hello World"); btn.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 

来自Oracle Docs ,

当使用JavaFX Packager工具创建应用程序的JAR文件时,JavaFX应用程序不需要main()方法,该工具将JavaFX Launcher嵌入JAR文件中。 但是, 包含 main()方法非常有用,因此您可以运行在没有JavaFX Launcher的情况下创建的JAR文件,例如在使用未完全集成JavaFX工具的IDE时。 此外,嵌入JavaFX代码的Swing应用程序需要main()方法。