Можно ли использовать jlink для кросс-компиляции (связки) приложения для разных операционных систем?

Существует модульное приложение http://github.com/cuba-platform/cuba-cli который можно легко связать с jlink с помощью Gradle:

Пакет ./gradlew

На данный момент он связывает приложение с пользовательским образом JRE на Java 10 только с JAVA, установленным в операционной системе.

В Баше это:

jlink --module-path $JAVA_HOME/jmods:modules,
    --add-modules cli
    --output ./build/bundle
    --launcher launch=cli/Cli

Как я могу создавать пакеты приложений для Windows и Mac OS, если я создаю свое приложение для Linux? Могу ли я просто где-нибудь извлечь JDK для Windows/Mac OS и выполнить компоновку с этими специфичными для платформы JDK?


person jreznot    schedule 16.05.2018    source источник
comment
Да, это возможно. Вам необходимо загрузить JDK для целевой платформы, а затем указать каталог JDK jmod в пути к модулю (который вы указываете для --add-modules).   -  person Alan Bateman    schedule 16.05.2018
comment
@AlanBateman Это, однако, не будет работать наоборот (создание образов Linux / MacOS в Windows), потому что Windows не может установить разрешения для файлов UNIX и флаги исполняемых файлов для средства запуска Java.   -  person ZhekaKozlov    schedule 17.05.2018
comment
Да, проблема с исправлением прав доступа к файлам при копировании чего-либо (не только образа времени выполнения) из одной системы в другую может быть проблемой.   -  person Alan Bateman    schedule 17.05.2018