Можно ли развернуть связанное время выполнения с помощью javapackager? - PullRequest
0 голосов
/ 16 мая 2018

В инструкциях к javapackager чуть выше Примера 2-1 в Руководстве по развертыванию Java SE / Упаковка автономного приложения указывает, что в команде -deploy требуется файл jar.

Если я использую модульный jar, я получаю следующее сообщение об ошибке:

Исключение: java.lang.Exception: Ошибка: Модули не разрешены в файлах srcfiles: [dist \ tcdmod.jar].

Если я использую эквивалентную немодульную флягу, результирующий пакет включает полное время выполнения.Но я хочу использовать сокращенное время выполнения, которое я создал для jlink, который находится в папке / dist.

Может ли команда javapackager развернуться с использованием времени выполнения, сгенерированного jlink?Как?

В разделе «Настройка JRE» не упоминается команда javapackager.

В следующем разделе «Упаковка для модульных приложений» есть следующая строка:

Используйте инструмент Java Packager для упаковки модульных приложений, а также немодульных приложений.

Отличается ли инструмент Java Packager от javapackager?В этом разделе нет примеров использования javapackager.

Вот команда javapacker, которую я использовал:

javapackager -deploy -native -outdir packages -outfile ToneCircleDrone -srcdir dist -srcfiles tcdplain.jar -appclass com.adonax.tanpura.TCDLaunch -name "ToneCircleDrone" -title "ToneCircleDrone test"

В инструкциях в документации по javapackager не упоминается сценарий, когдаJlink Runtime используется.Существует аргумент Bundler -Bruntime, но он используется только для указания на установленную среду выполнения, отличную от системного по умолчанию, AFAIK.

1 Ответ

0 голосов
/ 31 мая 2018

javapackager, поставляемый с JDK 9 и выше, использует jlink для генерации образа jre:

Для автономных приложений Java Packager для JDK 9 упаковывает приложения с JDK 9образ во время выполнения, созданный инструментом jlink.Чтобы упаковать JRE JDK 8 или JDK 7 с вашим приложением, используйте Java Packager JDK 8.

https://docs.oracle.com/javase/9/tools/javapackager.htm#JSWOR719

Вы можете даже передавать аргументы в jlink, используя -BjlinkOptions=<options>

Кроме того, -Bruntime действителен только для пакетов, развернутых с использованием -deploy -native jnlp

. Для компиляции модульного приложения вместо -srcdir используйте --module-path <dir>, а затем укажите основноймодуль, использующий -m <module name>.

РЕДАКТИРОВАТЬ: Хотя документация по -BjlinkOptions отсутствует, она присутствует в источнике javapackager

jdk.packager / jdk.packager.internal.legacy.JLinkBundlerHelper

https://github.com/teamfx/openjfx-10-dev-rt/blob/bf971fe212e9bd14b164e4c1058bc307734e11b1/modules/jdk.packager/src/main/java/jdk/packager/internal/legacy/JLinkBundlerHelper.java#L96

Пример использования: -BjlinkOptions=compress=2 заставит javapackager выполнить jlink с флагом --compress=2, создав образ JRE с уровнем Zip Levelсжатие.

Дополнительно, запуск javapackager с флагом -Bverbose=true покажет вам, какие именно аргументы передаются в jlink со строкой в ​​выводе, что-то вроде этого:

userArguments = {strip-debug = 1 compress = 2}

...