Как создать кроссплатформенные исполняемые файлы для приложения 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