How to start a TornadoFX app from a launcher class
众所周知,对于较新版本的 javafx 应用程序,要使 fatjar 正确运行,启动应用程序的主类不能从 Application 类继承。简单的解决方法是创建一个调用主类的主要方法的启动器类。
我在使用 Kotlin 和 TornadoFX 时遇到了麻烦(两者都很新)。
我的示例应用程序是最小的:
1 | class MyApp: App(MainView::class, Styles::class) |
问题是如何从另一个启动器类开始这个类?
我认为最简单也可能是最好的方法是使用如下函数。
如果我们创建一个 Kotlin 文件 Launcher.kt 名称并不重要。
下面的内容
1 2 3 4 5 6 7 8 | package my.app class MyApp: App(MainView::class, Styles::class) // stand alone function fun main(args: Array<String>) { launch<MyApp>(args) } |
那么主类名将是
现在我们有一个在 jar 清单中使用的主类声明,或者我们可以使用阴影插件来创建胖 jar,如下所示 Shadow JAR
注意这里的启动函数来自 tornadofx.App.kt
我所做的是把函数:
1 2 3 | fun main(args: Array<String>) { launch<MyApp>(args) } |
在同一个文件中,但在 App 类之外。然后我让我的 IDE 和构建工具(在我的例子中是 Maven)指向这个文件。