JDK11 / JavaFX: Как сделать толстый флягу без управления сборкой / отложениями? - PullRequest
4 голосов
/ 22 марта 2019

Я думаю, что само собой разумеется, что я должен иметь возможность использовать собственный JDK Oracle с JavaFX (из gluonhq) для создания распространяемого файла JAR, который пользователи могут просто использовать.

После исчерпывающего поиска, много чтения (24 часа и более за последние несколько месяцев) и, наконец, этот поисковый запрос Google:

how to make a fat jar -maven -gradle -scala -eclipse -ant -docker -hadoop -netbeans -jerkar -phy -mozni -yogurt -pizza - throwing -python -bacon

Я абсолютно в конце пути. С какой стати это так много работы? Как я могу создать приложение JavaFX и дать его людям, которые хотят его использовать, не зная ничего, кроме как использовать само приложение?

1 Ответ

6 голосов
/ 22 марта 2019

На этот вопрос уже отвечали несколько раз для Maven и Gradle . Инструменты сборки упрощают работу, чем в командной строке, и не только благодаря управлению зависимостями.

Поскольку вы спрашиваете конкретно о командной строке, здесь уже задокументирован полный набор инструкций: https://openjfx.io/openjfx-docs/#modular.

Немодульное приложение

Раздел Non-Modular from CLI охватывает немодульные проекты JavaFX из командной строки и дает вам полный набор инструкций для создания старого классического толстого фляги, в которой все зависимости, включая зависимости JavaFX, объединены вместе.

Есть примечание, предупреждающее вас не использовать эту процедуру:

Предупреждение: это обескураживающий утомительный, подверженный ошибкам ручной процесс, которого следует избегать с помощью плагина Maven's shade или задачи jar Gradle, если jlink не применим.

После того, как вы получите толстый jar (он может быть кроссплатформенным), вы можете распространять его, и вашему пользователю нужно будет установить и запустить Java:

java -jar myFat.jar 

Модульное приложение

Раздел Modular from CLI охватывает модульные проекты JavaFX из командной строки и относится к использованию команды jlink в терминах распространения, поскольку она создает пользовательский образ, который вы можете отправлять своим пользователям. Это не толстая банка, но она позволит вам отправить почтовый индекс вашему пользователю, который нужно только распаковать и запустить как:

hellofx/bin/java -m hellofx/hellofx.HelloFX

В этом случае вашему пользователю даже не нужно будет устанавливать Java.

И с небольшим количеством дополнительной работы вы также можете создать пакет, чтобы вы могли запустить:

hellofx

Однако, если вы все еще хотите сделать толстую банку с модульным приложением, вы все равно можете применить те же самые инструкции из немодульных приложений. В этом случае вам, вероятно, придется удалить файл module-info.java, так как на данный момент это не имеет смысла.

Другие опции

У вас еще есть несколько вариантов распространения приложения.

Пользовательское изображение Java + JavaFX

Другой вариант, описанный в том же документе, раздел «Пользовательский образ JDK + образ JavaFX», объясняет, как создать свой собственный «JDK», включающий JavaFX. Затем вы создадите свой jar как обычно в Java 8 и сможете запустить его с:

/path/to/custom/java -jar myFat.jar

Обратите внимание, что уже есть некоторые дистрибутивы JDK, которые включают JavaFX, например, one .

JPackage

jpackage инструмента еще нет, но есть ранний доступ: http://jdk.java.net/jpackage/,, который использует Java 13-internal. В существующей документации объясняется, какие параметры командной строки необходимы для создания пользовательского образа или установщика.

Обратите внимание, что вы все еще можете использовать JavaFX 11 или 12 с этим.

Инструменты сборки

И, наконец, вы все еще можете решить использовать инструменты сборки (Maven или Gradle), которые действительно помогут вам во многих отношениях. Смотрите любой из связанных вопросов выше.

...