Причина, по которой он потерпит неудачу, состоит в основном в том, что имя автоматического модуля , полученное из используемого вами фляги, не будет javafx.graphics
. Пытаясь получить подробности с помощью командной строки, я мог наблюдать следующее:
jar --file=.../org/openjfx/javafx-graphics/11/javafx-graphics-11.jar --describe-module
No module descriptor found. Derived automatic module.
javafx.graphicsEmpty@11 automatic
requires java.base mandated
и поскольку разрешенное имя модуля отличается от указанного в командной строке --add-modules javafx.graphics
, следовательно, вы столкнулись с указанной ошибкой.
Кроме того, одна из заметок из Run HelloWorld с использованием JavaFX 11 гласит:
нет необходимости добавлять javafx.graphics
модуль, так как он
транзитивно требуется для javafx.controls
модуля
Редактировать из комментариев : - Шаги, определенные в Запуск HelloWorld с использованием Gradle с JavaFX будет лучшим местом для поиска подходящих шагов для сборки с помощью gradle.
Как говорится (редактирует мой), нужно указать платформу в зависимостях, например,
compile "org.openjfx:javafx-graphics:11:$platform"
... классификаторы не учитываются при разрешении переходных
зависимости в Gradle. Поэтому нам нужно уточнить ...
модули с платформой в качестве классификатора
и для которого вам может понадобиться сценарий сборки, который также используется в примере для указания платформы / ОС в качестве классификатора.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0'
}
}
apply plugin: 'application'
apply plugin: 'com.google.osdetector'
ext.platform = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os