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 |
那么主类名将是
mainClassName = ‘my.app.MyAppKt’
现在我们有一个在 jar 清单中使用的主类声明,或者我们可以使用阴影插件来创建胖 jar,如下所示 Shadow JAR
注意这里的启动函数来自 tornadofx.App.kt
我所做的是把函数:
1
2 3 |
fun main(args: Array<String>) {
launch<MyApp>(args) } |
在同一个文件中,但在 App 类之外。然后我让我的 IDE 和构建工具(在我的例子中是 Maven)指向这个文件。
来源:https://www.codenong.com/59937274/