Reputation: 335
I am trying to setup a Docker Image based on Zulu OpenJDK 8 width JavaFX and Maven. But unfortunately JavaFX is not part in the debian binary.
FROM azul/zulu-openjdk-debian:8u222
ARG MAVEN_VERSION=3.6.2
ARG SHA=d941423d115cd021514bfd06c453658b1b3e39e6240969caf4315ab7119a77299713f14b620fb2571a264f8dff2473d8af3cb47b05acf0036fc2553199a5c1ee
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
RUN apt-get update \
&& apt-get upgrade -y \
&& mkdir -p /usr/share/man/man1 \
&& apt-get install -y --no-install-recommends \
ca-certificates \
curl \
git \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
&& rm -f /tmp/apache-maven.tar.gz \
&& rm -f /usr/bin/mvn \
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
Unfortunately, I am not able to build JavaFX based applications:
[ERROR] /builds/myproject/java-clients/examples/javafx/src/main/java/com/myproject/demo/fx/DemoFxClient.java:[28,20] package javafx.scene does not exist
I've also tried to just use the openjdk docker image:
FROM openjdk:8-jdk-slim-buster
ARG MAVEN_VERSION=3.6.2
ARG SHA=d941423d115cd021514bfd06c453658b1b3e39e6240969caf4315ab7119a77299713f14b620fb2571a264f8dff2473d8af3cb47b05acf0036fc2553199a5c1ee
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
RUN apt-get update \
&& apt-get upgrade -y \
&& mkdir -p /usr/share/man/man1 \
&& apt-get install -y --no-install-recommends \
openjfx \
ca-certificates \
curl \
git \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
&& rm -f /tmp/apache-maven.tar.gz \
&& rm -f /usr/bin/mvn \
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
Was anyone able to create a Docker Image supporting JavaFX builds?
Upvotes: 2
Views: 2093
Reputation: 335
I have found out that the original problem was not with the JavaFX setup, but that JavaFX dependencies need to be added as maven dependencies.
Zulu JDK 11 with Java FX and Maven Docker Image (e.g. to be used in GitLab Pipeline)
FROM debian:buster-slim
ARG MAVEN_VERSION=3.6.2
ARG SHA=d941423d115cd021514bfd06c453658b1b3e39e6240969caf4315ab7119a77299713f14b620fb2571a264f8dff2473d8af3cb47b05acf0036fc2553199a5c1ee
ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
# Install libraries used for builds
RUN apt-get update \
&& apt-get upgrade -y \
&& mkdir -p /usr/share/man/man1 \
&& apt-get install -y --no-install-recommends \
software-properties-common \
wget \
gnupg \
curl \
ca-certificates \
bzip2 \
zip \
unzip \
git \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/*
# Install Zulu 11
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 \
&& apt-add-repository 'deb http://repos.azulsystems.com/debian stable main' \
&& apt-get update \
&& apt-get install -y --no-install-recommends zulu-11
# Install Maven
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
&& tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
&& rm -f /tmp/apache-maven.tar.gz \
&& rm -f /usr/bin/mvn \
&& ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
# Add JavaFX
RUN curl -fsSL -o /tmp/javafx-11-0-2-sdk-linux.zip http://gluonhq.com/download/javafx-11-0-2-sdk-linux/ \
&& cd /tmp/ \
&& unzip /tmp/javafx-11-0-2-sdk-linux.zip \
&& cp -arf /tmp/javafx-sdk-11.0.2/lib/* /usr/lib/jvm/zulu-11-amd64/lib/
pom.xml
<project>
<!--- ... --->
<properties>
<maven.compiler.release>11</maven.compiler.release>
<javafx.version>11</javafx.version>
</properties>
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>${maven.compiler.release}</release>
</configuration>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.3</version>
<configuration>
<mainClass>org.openjfx.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
These StackOverflow questions / CodeRepos have been helpful:
Upvotes: 3