This material在第10页上说,可以在不编写main
的情况下运行JavaFX应用程序。我想在main
里面有一些预定义的jfxrt.jar
,它会查找一个扩展Application
并运行它的类。
答案 0 :(得分:5)
我认为
main
内部有一些预定义的jfxrt.jar
,它会查找扩展Application
并运行它的类。
这个评论并不是真正的意思,并不是它的运作方式。所有它说的是"主要类"如果它是main(String[] args)
的子类,则不需要定义javafx.application.Application
方法。来自Oracle tools documentation for java
:
java
命令可用于通过加载具有main()
方法或扩展javafx.application.Application
的类来启动JavaFX应用程序。在后一种情况下,启动器构造Application
类的实例,调用其init()
方法,然后调用start(javafx.stage.Stage)
方法。
(我的重点)
因此,如果在命令行上指定的类是Application
的子类,则此行为将简单地附加到JVM可执行文件中。请注意,您仍然必须指定要运行的类;如果它是Application
子类,它就不需要主方法。 (JVM没有扫描候选类运行的类路径,正如您在问题中所描述的那样。)
要运行的类可以在命令行(java com.mycompany.MyApp
)上指定,也可以通常的方式在jar文件清单中指定。
这是在JDK 8中添加的,iirc。