【问题标题】:Is main unnecessary when using `start` method in JavaFX?在 JavaFX 中使用 `start` 方法时不需要 main 吗?
【发布时间】:2019-03-31 15:28:35
【问题描述】:

使用 JavaFX 时,我们会覆盖启动应用程序的方法 start。

@Override
public void start(Stage primaryStage ) {}

我发现当没有 main 方法时,java 编译器理解 start 是起点。 main 方法似乎是不必要的。 是否有理由仍在实施 main ?

是否还有功能性理由仍然实现 main 方法?

【问题讨论】:

标签: java javafx main


【解决方案1】:

注意:我的回答假设 OpenJDK/OracleJDK。我不知道其他供应商是否有同样的行为

其他人引用的文档侧重于不再存在的 JavaFX Packager 工具1。值得注意的是,该工具似乎不是必需的(至少对于 Java 10 和 11)。唯一需要的是存在 JavaFX 库并且指定的主类扩展 Application;那么无论代码是如何组装的,你都不需要main 方法。

是否还有功能上的原因仍然要实现 main 方法?

在普通的 JavaFX 应用程序中,我会说不。您想在main 中进行的几乎所有初始化都可以在Application.init 中进行。您还可以通过Application.getParameters 访问命令行参数。

附:最重要的问题,为什么编译器接受 start 作为起点。。这违背了我的编程神经症

有关 JavaFX(至少 10 和 11)应用程序的内部启动过程的详细信息,请参阅 my answer here

此外,编译器不“接受 start 作为起点”。编译器只是编译代码并看到start——和main——与任何其他方法相同。它是搜索main 并调用它的运行时。也就是说,链接的答案涵盖了start(以及一般的 JavaFX 应用程序)如何得到特殊处理。


1. Java 11 中删除了打包工具。但是,有一个可能的替代品即将到来:jpackager

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多