JRE не видит модули зависимостей в .jar файле
Я написал приложение с JavaFx в IntelliJ IDEA , собрал его в jar встроенным инструментом, и при запуске jar, выдает ошибку что не может найти не один модуль зависимости.
Запускаю через cmd:
java --module-path "D:\...\MyJar.jar" --module caster/caster.Main
И каждый раз выдает ошибки:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found, required by caster
java.lang.module.FindException: Module javafx.fxml not found, required by caster
java.lang.module.FindException: Module okhttp3 not found, required by caster
и тд, ко всем зависимостям
module-info.java
open module caster{
requires javafx.controls;
requires javafx.fxml;
requires okhttp3;
requires annotations;
requires java.desktop;
}
Хотя в jar они есть:
Что нужно поправить, или IDEA неправильно собирает?
Ответы (2 шт):
Ты неправильно написал java команду. Тебе надо было написать --module-path "путь до специальной для запуска библиотеки java fx\lib", а ты указал jar файл. Во вторых метода --modules не существует, тебе надо написать --add-modules javafx.controls,javafx.fxml, если используешь еще какие-то модули, то добавь их через запятую. Целиком команда должна выглядеть так: java --module-path "<путь до JavaFX библиотеки>\lib" --add-modules javafx.controls,javafx.fxml -jar <путь до .jar без кавычек>. Скачать саму JavaFX библиотеку ты можешь здесь:
https://gluonhq.com/products/javafx/ просто выбери свою ОС и скачай той же версии java, на которой ты писал и не забудь разархивировать и достать от туда папку.
Нашел решение здесь, а именно:
- Добавил новый
Mainкласс который не наследуется отApplication - Проверил чтобы файлы
javafxнаходились в моемjar, они были добавлены по умолчанию - Запустил как обычный
jar:java -jar MyApp.jar
