arteqrt
@arteqrt
Почти не начинающий програмист

JavaFX runtime components are missing(все модули прописаны)?

Вот реально не знаю что, все сделал, как в документации просят.
5fcfdab4ae481995591402.png5fcfdab9c1e5e851141567.png
В intellij idea все работает, через консоль jar файл не запускает, через двойной клик тоже.
Перешарил все статьи.

jar создал правильно, через главный класс.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
Загвоздка в том что javafx стал модулем и сама модульная система работает чуть иначе.
Собственно раньше в java8 было так что:
  • собрал jar и запускаешь его командой "java -jar имя_файла.jar"
  • если есть зависимые библиотеки то так "java -cp зависимые_библиотеки.jar -jar имя_файла.jar"
  • можно собрать fatjar. Тут зависимости при сборке вашего jar помещаются внутрь вашего jar. Запуск такой "java -jar имя_файла.jar"

Проблема зависимостей связана с тем что они тащят всю библиотеку за собой.

С приходом java9 и новее пришли модули которые по сути "должны" заменить старую систему зависимостей и проблему таскания ненужного кода в библиотеках.
Теперь так, но учтите что тут есть подводные камни т.к. работает и старая и новая система и могут даже пересекаться между собой. Для примера вы можете собрать свой jar как модуль или по старинке "тупой jar"
  • если программа не берет никакие модули то можно по старинке "java -jar имя_файла.jar"
  • если программа сама собранна как модуль "java --module-path "путь\до\директории\с\модулем\проги" --add-modules имя.модуля.вашей.проги -m имя.модуля.вашей.проги/имя.главного.класса"
  • если есть другие зависимые модули то все в точности как в предыдущем пункте
  • так же могут быть собраны fatjar как в java8


Вам для запуска надо так "java --module-path "на последнем скрине путь ваш есть" --add-modules javafx.controls,javafx.fxml -jar имя_файла.jar -m имя.модуля.вашей.проги/имя.главного.класса".

Это очень поверхностно и крайне кратко все. В целом система модулей предполагает что вы больше не должны отправлять вашу программу в виде jar, а должны собрать самодостаточную программу. Т.е. в компиляторах есть утилиты что бы упаковать вашу программу вместе со всеми необходимыми модулями и jre, пользователь же просто запускает ее не устанавливая jre\javafx\кучи библиотек.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы