如何从启动器启动 TornadoFX 应用 class

How to start a TornadoFX app from a launcher class

对于更新版本的 javafx 应用程序来说,well known 一个 fatjar 正确地 运行 启动应用程序的主要 class 不能继承应用程序 class .简单的解决方法是创建一个启动器 class 调用 main class.

的主要方法

我在使用 Kotlin 和 TornadoFX(两者都很新)时遇到了问题。

我的示例应用程序是最小的:

class MyApp: App(MainView::class, Styles::class) 

问题是如何从另一个启动器 class 启动这个 class?

我所做的是放置函数:

fun main(args: Array<String>) {
    launch<MyApp>(args)
}

在同一个文件中,但在应用程序之外 class。然后我让我的 IDE 和构建工具(在我的例子中是 Maven)指向这个文件。

我认为最简单也可能是最好的方法是使用如下函数。

如果我们制作一个 Kotlin 文件 Launcher.kt 名称并不重要。以下内容

package my.app

class MyApp: App(MainView::class, Styles::class) 

// stand alone function
fun main(args: Array<String>) {
launch<MyApp>(args)
}

那么主要 class 名称将是 mainClassName = 'my.app.MyAppKt'

现在我们有一个主要的 class 声明,它在 jars 清单中使用,或者我们可以使用 shadow 插件来创建 fat jars,如此处所示 Shadow JAR

注意这里的启动函数来自tornadofx.App.kt