diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index 9253524fa..70038ef23 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -347,12 +347,27 @@ public final class LauncherHelper { JavaVersionConstraint.VersionRanges range = JavaVersionConstraint.findSuitableJavaVersionRange(gameVersion, version); GameJavaVersion targetJavaVersion; - if (range.getMandatory().contains(VersionNumber.asVersion("16"))) { + if (range.getMandatory().contains(VersionNumber.asVersion("17.0.1"))) { + targetJavaVersion = GameJavaVersion.JAVA_17; + } else if (range.getMandatory().contains(VersionNumber.asVersion("16.0.1"))) { targetJavaVersion = GameJavaVersion.JAVA_16; - } else if (range.getMandatory().contains(VersionNumber.asVersion("1.8.0_51"))) { - targetJavaVersion = GameJavaVersion.JAVA_8; } else { - targetJavaVersion = null; + String java8Version; + + if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { + java8Version = "1.8.0_51"; + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + java8Version = "1.8.0_202"; + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + java8Version = "1.8.0_74"; + } else { + java8Version = null; + } + + if (java8Version != null && range.getMandatory().contains(VersionNumber.asVersion(java8Version))) + targetJavaVersion = GameJavaVersion.JAVA_8; + else + targetJavaVersion = null; } if (targetJavaVersion != null) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameJavaVersion.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameJavaVersion.java index 9d735c246..28ca06320 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameJavaVersion.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/GameJavaVersion.java @@ -38,6 +38,7 @@ public class GameJavaVersion { return majorVersion; } + public static final GameJavaVersion JAVA_17 = new GameJavaVersion("java-runtime-beta", 17); public static final GameJavaVersion JAVA_16 = new GameJavaVersion("java-runtime-alpha", 16); public static final GameJavaVersion JAVA_8 = new GameJavaVersion("jre-legacy", 8); }