JavaFX + HSQLDB. Сборка автономного приложения
Доброго времени суток.
Задача: Необходимо собрать настольное javaFX приложение под Windows, которое могло бы запускаться на машине пользователя без предварительной установки Java. При этом необходимо использовать Java 11 или выше, JavaFX 14 и HSQLDB.
Как я пытался решить задачу:
- Выбор инструментария - Если я правильно понял, с помощью jlink можно получить собственную JVM включающую только необходимые модули. Чтобы распространять удобным для пользователей способом приложение я решил использовать jpackage (из Java 14), чтобы получить установщик своего приложения (и избавиться от консоли появляющейся при запуске приложения). Среда разработки и система сборки - IDEA + Maven. Как воспользоваться функционалом jlink и jpackage из IDEA я не разобрался, поэтому работал с ними из Windows Terminal.
- Модульность - jlink работает с модулями, поэтому собственное приложение я также сделал модульным. В качестве встроенной БД я выбрал HSQLDB (сперва хотел H2, но она не поддерживает модули).
Что не получилось: При вызове jlink, она жалуется на HSQLDB - Error: automatic module cannot be used with jlink: hsqldb Вроде как HSQLDB модульная, однако при просмотре содержимого jar, в котором она поставляется, я не нашел module-info.class. И как я подозреваю - собственные зависимости HSQLDB не модульные.
Вопросы:
- Можно ли заставить проглотить jlink автоматический модуль?
- Если нет, то что нужно сделать с hsqldb, чтобы получить полноценный модуль(модули)?
- Возможно ли вместо полноценного включения HSQLDB как модуля, добавить HSQLDB в ресурсы проекта, подгружать его кастомным загрузчиком классов, а потом все это скормить jlink?
- Есть ли более простые и оптимальные способы решить мою задачу?