Почему OpenJDK 8 не использует правильные библиотеки JavaFX при использовании Docker? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть Java-программа, которую я написал.Основные вещи включают OpenJDK8, Maven и JavaFX.Программа строит и работает самостоятельно.Я хочу поместить его в контейнер Docker, но у меня возникают проблемы с его сборкой.

Вот мой Dockerfile:

FROM openjdk:8-jdk
FROM maven:3.3-jdk-8-onbuild
RUN apt-get update && apt-get install -y --no-install-recommends openjfx && rm -rf /var/lib/apt/lists/*
CMD ["java","-jar","target/"CodeDemo-1.0-SNAPSHOT.jar"]

Вот что я запустил, чтобы построить контейнер:

sudo docker build -t java-maven-code-demo .

Вот ошибка, которую я продолжаю жаловаться на отсутствие javafxpackager:

Не удалось выполнить цель org.codehaus.mojo: exec-maven-plugin: 1.2.1: exec (unpack-зависимости) в проекте CodeDemo: Ошибка выполнения команды.Не удается запустить программу "/usr/lib/jvm/java-8-openjdk-amd64/jre/../bin/javafxpackager" (в каталоге "/ usr / src / app"): ошибка = 2, такого файла или каталога нет-> [Помощь 1]

У меня есть все файлы в каталоге CodeDemo.На верхнем уровне у меня есть src, target, Dockerfile, pom.xml.В target у меня есть скомпилированный jar.

Я сбит с толку из-за ошибки, потому что я думал, что Java 8 OpenJDK поставляется с JavaFX.Итак, если я использую OpenJDK, я должен получить то, что мне нужно для JavaFX ( аналогичный вопрос по GitHub - решение все равно выдало ошибку).

Может кто-нибудь указать мне, что я могу делать неправильно?Что-то еще, что я должен сделать, чтобы получить надлежащие библиотеки?

1 Ответ

0 голосов
/ 04 февраля 2019

У вас есть несколько FROM строк.На основании вашего Dockerfile будет использоваться только базовый образ maven.Может быть, попробуйте установить openjdk с помощью другого оператора RUN перед установкой openjfx?

Я также не вижу ни одного оператора COPY в вашем Dockerfile.Изначально я предполагал, что * * * * * * * * * * * * * * *> * * * * * * * * * * * * * * * * * * * * * * * * по умолчанию не существует. CodeDemo-1.0-SNAPSHOT.jar существует по умолчанию на образе maven, но я только что попытался создать изображение, и его не существует.Если это файл jar из вашей Java-программы, не забудьте добавить его с помощью оператора COPY в вашем Dockerfile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...