jpackage создает 2 копии JRE - PullRequest
       5

jpackage создает 2 копии JRE

0 голосов
/ 09 ноября 2019

Я использую jpackage (с JDK 14) для создания автономного приложения JavaFX.

Вывод jpackage выглядит странно, он состоит из двух одинаковых копий JRE и все файлы в папке app, кроме файла App.cfg, могут быть удалены без проблем.

Может ли jpackage не создавать ненужные файлы?


Что у меня есть:

У меня есть простой проект, созданный из архетипа Maven org.openjfx:javafx-archetype-simple:0.0.3,И я просто добавил maven-shade-plugin для создания jar с зависимостями и простой класс запуска для него (например, NewMain class здесь ).

Я делаю:

mvn package
mvn javafx:jlink
jpackage --package-type app-image --dest targetApp --name App --runtime-image target/image --main-jar testApp-1.0-SNAPSHOT.jar --input target

В результате у меня есть две папки с JRE (абсолютно одинаковые):

  • targetApp\App\runtime
  • targetApp\App\app\image

и все файлы(и папки) (JRE (~ 53 МБ), Jar (~ 9 МБ), классы ...) в targetApp\App\app можно безопасно удалить, кроме файла App.cfg.

После удаления этих файлов язапустите targetApp\App\App.exe и все работает нормально.

Удаление уменьшает размер App со 118 до 56 МБ.


Дополнительныйвопрос : я использую Windows, и jpackage генерирует результат для Windows (много файлов dll и exe), могу ли я создать отдельное приложение в Windows для Mac и Linux?

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Вы получаете этот результат, потому что вы уже создали uber-jar, который содержит все, кроме того, что вы указали с помощью --input target, который, согласно документации, имеет следующий эффект.

All files in the input directory will be packaged into the
application image.

Попробуйтеработает ли он просто для удаления опции --input target или не создает uber-jar. Вместо этого используйте плагин maven-dependency-plugin, чтобы скопировать все зависимости в одну папку, скажем target/libs, а затем явно указать --input target/libs.

Ваш второй вопрос: вы не можете перекрестно создавать приложения для других целей,если это ваш вопрос.

0 голосов
/ 09 ноября 2019

Возможно, вы захотите проверить проект JPackageScriptFX на GitHub. Он содержит образец многомодульной структуры проекта maven и сценарии сборки для Mac и Windows, которые будут собирать все доступные типы пакетов и исполняемые файлы для обеих платформ. Вы можете найти его здесь: https://github.com/dlemmermann/JPackageScriptFX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...