Как запустить приложение TornadoFX из класса запуска - PullRequest
1 голос
/ 27 января 2020

Известно , что для правильной работы fatjar для более поздних версий приложений javafx основной класс, запускающий приложение, не может наследоваться от класса Application. Простой способ обойти это - создать класс запуска, который вызывает основной метод основного класса.

У меня проблемы с этим с Kotlin и TornadoFX (довольно новым для обоих).

Мой пример приложения минимален:

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

Вопрос в том, как я могу запустить этот класс из другого класса запуска?

Ответы [ 2 ]

3 голосов
/ 27 января 2020

Я думаю, что самый простой и, возможно, лучший способ сделать это с помощью функции следующим образом.

Если мы создадим Kotlin файл, то имя Launcher.kt не важно. Содержимое ниже

package my.app

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

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

тогда имя основного класса будет mainClassName = 'my.app.MyAppKt'

Теперь у нас есть объявление основного класса, которое используется в манифесте jars, или мы могли бы использовать плагин shaddow для создания толстые банки, как показано здесь Shadow JAR

Обратите внимание, что функция запуска здесь от tornadofx.App.kt

3 голосов
/ 27 января 2020

Что я сделал, так это поместил функцию:

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

В тот же файл, но вне класса App. Затем у меня есть IDE и инструмент сборки (Maven в моем случае), указывающий на этот файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...