Как создать кроссплатформенные исполняемые файлы для приложения JDK9 с помощью команды JLink

Я пытаюсь создать кроссплатформенные / платформенно-независимые исполняемые файлы для моего JAVA-9 приложения / проекта.

Я думаю, что команда jlink создаст только исполняемый файл / время выполнения для конкретной платформы.

3 ответа

JLink ( описанный в JEP 282) создает модульные образы времени выполнения ( описанные в JEP 220, в частности, раздел Новая структура образа времени выполнения). Эти образы являются обобщением JRE, JDK и компактных профилей и являются специфичными для ОС, как и они. Следовательно, JLink нельзя использовать для создания кроссплатформенных исполняемых файлов.

Тем не менее, можно запустить JLink в одной операционной системе и создать образ времени выполнения для другой ОС. Все, что вам нужно для этого сделать, это загрузить и распаковать JDK 9 (той же версии, что и JLink) и поместить его jmods папка на пути к модулю для вызова JLink.

Я знаю, что это старый вопрос, но поскольку он был для меня одним из лучших результатов Google, прежде чем опубликовать свой вопрос, я решил также задокументировать свои выводы здесь.

Столкнулся с той же проблемой при попытке создания образов среды выполнения для Java 11. Проблема сводилась к неправильной ссылке на целевую папку JDK, что, в свою очередь, означало, что модули JDK не были найдены в пути к модулю. jlinkзатем по умолчанию включаются файлы модуля JDK хоста (и соответствующие двоичные файлы, библиотеки и т. д.) в сгенерированный образ времени выполнения. Правильно ссылаясь на целевой JDK jmods , то сгенерированный образ среды выполнения содержит исполняемые файлы для конкретной платформы и сопутствующие файлы.

Это было протестировано на машине Windows путем создания образов среды выполнения для Windows, Linux и MacOS.

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

Чтобы ознакомиться с Jlink и как создавать эти изображения, вы можете начать здесь: https://sites.google.com/a/athaydes.com/renato-athaydes/posts/guidetojava9-compilejarrun

Другие вопросы по тегам