Похоже, что вы запускаете проект TornadoFX с Java 11 или 12.
Также похоже, что плагин TornadoFX предназначен для Java 1.8, но не рекомендуется что делатьделать с Java 11 +.
Начиная с Java 11, JavaFX больше не является частью JDK.
Вы можете прочитать все о получении JavaFX как сторонней зависимости в ваш проект здесь: https://openjfx.io/openjfx-docs/, и поскольку вы используете Gradle, этот раздел будет вам полезен: https://openjfx.io/openjfx-docs/#gradle.
Я только что установил плагин Tornado и создал проект, используя JDK 12.0.1.Я также обновил файл gradle-wrapper.properties
, чтобы использовать Gradle 5.3-bin, поскольку по умолчанию 4.4 не работает с Java 11 +.
Если я его запускаю, я получаю те же ошибки:
e: /.../src/main/kotlin/com/example/demo/app/Styles.kt: (3, 8): \
Unresolved reference: javafx
e: /.../src/main/kotlin/com/example/demo/app/Styles.kt: (18, 13): \
Cannot access class 'javafx.scene.text.FontWeight'. Check your module classpath for missing or conflicting dependencies
...
В основном эти ошибки указывают на то, что JavaFX не найден.Плагин Tornado этого не ожидал.
Решение
Существует простое решение для этой работы: добавьте в сборку плагин JavaFX gradle, чтобы он работалс частью JavaFX.
Согласно плагину репозиторий , все, что вам нужно сделать, это отредактировать файл build.gradle и добавить:
buildscript {
ext.kotlin_version = "1.2.60"
ext.tornadofx_version = "1.7.17"
ext.junit_version = "5.1.0"
repositories {
mavenLocal()
mavenCentral()
maven {
setUrl("https://plugins.gradle.org/m2/")
}
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.junit.platform:junit-platform-gradle-plugin:1.1.0"
// Add JavaFX plugin:
classpath 'org.openjfx:javafx-plugin:0.0.7'
}
}
apply plugin: "kotlin"
apply plugin: "application"
apply plugin: "org.junit.platform.gradle.plugin"
// Apply JavaFX plugin:
apply plugin: 'org.openjfx.javafxplugin'
// Add the JavaFX version and required modules:
javafx {
version = "12.0.1"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
...
И этообновите ваш проект, IDE должна распознавать все классы JavaFX.
Если вы измените значение по умолчанию MainView.kt
, например:
class MainView : View("Hello TornadoFX \n with JavaFX "
+ System.getProperty("javafx.version")) {
override val root = hbox {
label(title) {
addClass(Styles.heading)
}
}
}
, вы сможете запустить его: