Причина проблемы:
Ошибка: отсутствуют компоненты среды выполнения JavaFX, которые необходимы для запуска этого приложения.
уже получен ответ несколько раз(в том числе с Gradle), но, поскольку вы все еще используете «старый» подход для включения зависимостей JavaFX, вместо использования плагина JavaFX, я объясню, как это исправить.
Ошибка
Если вы посмотрите документацию JavaFX для Eclipse , раздел IDE (модульные или немодульные проекты), существует четкое объяснение этой проблемы:
Или, другими словами, зависимости JavaFX являются модульными и должны быть добавлены в путь к модулю.
Первое решение
Если вы продолжите чтение, вы сразу найдете объяснение, как его исправить (при условии, что вы не используете инструменты сборки):
Однако, поскольку вы используете Gradle, решение должно быть адаптированочтобы быть включенным в ваш файл сборки.
Вот как это было сделано, до с использованием плагина JavaFX:
compileJava {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls,javafx.fxml'
]
}
}
run {
doFirst {
jvmArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls,javafx.fxml'
]
}
}
Теперь вы сможете запускать:
./gradlew run
Кстати, вы все еще можете видеть здесь сборку примера HelloFX, упомянутую в документации, перед использованием плагина.
Плагин JavaFX
Плагин JavaFX для Gradle был создан именно для того, чтобы иметь дело со всем «стандартным кодом» в файле сборки.
Если вы проверите сейчасдокументацию по Eclipse, разделы Gradle (модульные или немодульные) или те же обновленные пример вы увидите, что файл сборки упрощен до следующего:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'
}
repositories {
mavenCentral()
}
dependencies {
}
javafx {
version = "13"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
mainClassName = 'org.openjfx.MainApp'
В вашем случае выпросто нужно адаптировать это к вашему файлу сборки, что-то вроде:
plugins {
id 'java-library'
id 'groovy'
id 'eclipse'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'
}
mainClassName = 'core.App'
group 'Project'
version '1.0'
sourceCompatibility = 11
repositories {
mavenCentral()
}
dependencies {
api 'org.apache.commons:commons-math3:3.6.1'
implementation 'com.google.guava:guava:27.0.1-jre'
testImplementation 'junit:junit:4.12'
implementation 'org.codehaus.groovy:groovy-all:2.5.8'
testImplementation 'org.spockframework:spock-core:1.2-groovy-2.5'
}
javafx {
version = "13"
modules = [ "javafx.controls", "javafx.fxml" ]
}
и запустить:
./gradlew run