Установите JavaFX в образ docker

#java #linux #docker #javafx

#java #linux #docker #javafx

Вопрос:

У меня есть образ, основанный на Linux (CentOS Linux) с Java OpenJDK 11. Я пытаюсь установить javafx на образ с помощью этого файла dockerfile:

 USER root
yum -y update   amp;amp; 
yum install –y openjfx
 

Но когда я пытаюсь создать образ, я получаю сообщение «Нет доступного пакета javafx». и «yum install OCoy javafx» вернул ненулевой код: 1″ Что я делаю не так? Есть ли другой способ включить библиотеки JavaFX в образ docker?

Комментарии:

1. Вы хотите создать пользовательский jdk или jre на основе openjdk, который включает модули JavaFX? (Ответом будет jdk или jre или что-то еще с лучшим объяснением).

2. Я хочу включить модули JavaFX. Я нашел это openjfx.io/openjfx-docs/#maven . И сейчас я пытаюсь указать модули в файле pom и скопировать их в изображение. Не уверен, что это сработает

3. Мне непонятно, что вы пытаетесь сделать, но если все, что вам нужно, это пользовательская среда выполнения Java для выбранной вами платформы, которая включает модули JavaFX, очень важно создать ее с помощью jlink , которая является частью любого современного дистрибутива jdk.

4. Или вы можете использовать jpackage для создания rpm, который может установить ваш docker (из репозитория yum, если вы хотите поместить его туда). Но тогда, как я уже сказал, я не знаю, чего вы хотите, поэтому, возможно, мои комментарии к вам не относятся или просто сбивают с толку. Пожалуйста, игнорируйте их, если они не являются релевантными решениями вашей проблемы.

Ответ №1:

Вы можете установить альтернативный JDK, например Liberica или Corretto, которые содержат OpenJFX-дистрибутив.

Комментарии:

1. Спасибо за информацию, но использование альтернативного JDK для меня не вариант. Я должен был упомянуть об этом в вопросе.

2. Тогда, вероятно, вам может потребоваться загрузить пакет OpenJFX вручную (например, через cURL) и извлечь его содержимое библиотеки в $ JAVA_HOME / lib, а содержимое bin — в $ JAVA_HOME / bin, конечно. В конечном итоге это должно сработать. Однако это своего рода устранение ошибок, поскольку вам нужно будет обновить эту ссылку для загрузки внутри вашего Dockerfile или сценариев оболочки. Другой подход может заключаться в том, чтобы загрузить его на свой хост и позволить docker build скопировать его в правильные места назначения.

3. То, что вы хотели бы сделать, описано здесь . По сути, вы хотите загрузить дистрибутив vom gluonhq.com в зависимости от вашей операционной системы, и вы готовы к работе. Вы также можете получить OpenJFX-JARs из Maven, но вам также нужно будет посмотреть на платформу. Конечно, обойти это невозможно. (Однако Docker всегда является linux arm или amd64). Преимуществом дистрибутива gluonhq является, например, добавленный исходный код.

4. Иногда при обращении к комментариям я нахожу полезным отредактировать вопрос, процитировать текст комментария в вопросе и написать ответ там, а не в поле комментария. Тогда вы получаете ответы неограниченной длины и сохраняете полные параметры редактирования и форматирования, которые вы не получаете в комментариях, а также обычно улучшаете качество ответов. Просто предложение.

5. Взгляните на repo1.maven.org/maven2/org/openjfx/javafx-graphics/15.0.1 . Это запись в репозитории для 15.0.1-javafx-graphics. JARs существует с несколькими классификаторами. Помимо исходных текстов и javadoc, у вас также есть JARs для win, mac и Linux. Как уже было сказано, для Linux вам всегда нужны те, у которых есть классификатор linux.