From d9e967390c0ae21e78ca0671b587dcd6075dede0 Mon Sep 17 00:00:00 2001 From: 3arthqu4ke <56741599+3arthqu4ke@users.noreply.github.com> Date: Thu, 18 Jul 2024 12:09:26 +0200 Subject: [PATCH] Install Java 21 on docker image --- Dockerfile | 3 +++ .../earth/headlessmc/launcher/java/JavaVersionParser.java | 2 +- .../headlessmc/launcher/java/JavaVersionParserTest.java | 6 ++++++ headlessmc-scripts/HeadlessMC/config.properties | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a0edf3ae..b7d4d311 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,12 +3,15 @@ # TODO: download HMC-Specifics? FROM openjdk:17.0.2-jdk as java17 +FROM openjdk:21-jdk as java21 FROM openjdk:8u332-jdk COPY --from=java17 /usr/java/openjdk-17 /usr/java/openjdk-17 +COPY --from=java21 /usr/java/openjdk-21 /usr/java/openjdk-21 # For some reason the jdk17 image does not come with any certificates, which causes problems RUN cp --remove-destination /usr/local/openjdk-8/jre/lib/security/cacerts /usr/java/openjdk-17/lib/security/cacerts +RUN cp --remove-destination /usr/local/openjdk-8/jre/lib/security/cacerts /usr/java/openjdk-21/lib/security/cacerts COPY . /headlessmc WORKDIR /headlessmc diff --git a/headlessmc-launcher/src/main/java/me/earth/headlessmc/launcher/java/JavaVersionParser.java b/headlessmc-launcher/src/main/java/me/earth/headlessmc/launcher/java/JavaVersionParser.java index e46cd218..01efa889 100644 --- a/headlessmc-launcher/src/main/java/me/earth/headlessmc/launcher/java/JavaVersionParser.java +++ b/headlessmc-launcher/src/main/java/me/earth/headlessmc/launcher/java/JavaVersionParser.java @@ -11,7 +11,7 @@ public class JavaVersionParser { private static final Pattern PATTERN = Pattern.compile( - "version \"(\\d+)[.-](\\d*)"); + "version \"(\\d+)[.-]?(\\d*)"); public int parseVersionCommand(String path) throws IOException { Process prcs = new ProcessBuilder().command(path, "-version").start(); diff --git a/headlessmc-launcher/src/test/java/me/earth/headlessmc/launcher/java/JavaVersionParserTest.java b/headlessmc-launcher/src/test/java/me/earth/headlessmc/launcher/java/JavaVersionParserTest.java index 0722b3c6..9d823fe5 100644 --- a/headlessmc-launcher/src/test/java/me/earth/headlessmc/launcher/java/JavaVersionParserTest.java +++ b/headlessmc-launcher/src/test/java/me/earth/headlessmc/launcher/java/JavaVersionParserTest.java @@ -37,6 +37,12 @@ public void testParse() throws IOException { "internal+0-adhoc..src)"); Assertions.assertEquals(17, version); + version = parser.parseVersion( + "openjdk version \"21\" 2023-09-19\n" + + "OpenJDK Runtime Environment (build 21+35-2513)\n" + + "OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)"); + Assertions.assertEquals(21, version); + Assertions.assertThrows(IOException.class, () -> parser.parseVersion("test")); } diff --git a/headlessmc-scripts/HeadlessMC/config.properties b/headlessmc-scripts/HeadlessMC/config.properties index 55a2a853..4977d188 100644 --- a/headlessmc-scripts/HeadlessMC/config.properties +++ b/headlessmc-scripts/HeadlessMC/config.properties @@ -1,7 +1,7 @@ # suppress inspection "UnusedProperty" for whole file # This config is for the docker container. hmc.gamedir=/headlessmc/headlessmc-scripts/HeadlessMC/run -hmc.java.versions=/usr/local/openjdk-8/bin/java;/usr/java/openjdk-17/bin/java +hmc.java.versions=/usr/local/openjdk-8/bin/java;/usr/java/openjdk-17/bin/java;/usr/java/openjdk-21/bin/java hmc.invert.lwjgl.flag=true hmc.invert.pauls.flag=true hmc.store.accounts=true