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 2cb882669..7674d98c6 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -303,7 +303,7 @@ public final class LauncherHelper { } // LaunchWrapper 1.12 will crash because of assuming the system class loader is an instance of URLClassLoader. - if (!flag && java.getParsedVersion() >= JavaVersion.JAVA_9 + if (!flag && java.getParsedVersion() >= JavaVersion.JAVA_9_AND_LATER && version.getMainClass().contains("launchwrapper") && version.getLibraries().stream() .filter(library -> "launchwrapper".equals(library.getArtifactId())) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index c46aeeb49..7263f1ec8 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -206,7 +206,7 @@ public class DefaultLauncher extends Launcher { } private final Map> forbiddens = mapOf( - pair("-Xincgc", () -> options.getJava().getParsedVersion() >= JavaVersion.JAVA_9) + pair("-Xincgc", () -> options.getJava().getParsedVersion() >= JavaVersion.JAVA_9_AND_LATER) ); protected Map> getForbiddens() { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java index 85ff96275..7ae02d27b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/JavaVersion.java @@ -17,6 +17,7 @@ */ package org.jackhuang.hmcl.util.platform; +import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.versioning.VersionNumber; @@ -76,9 +77,6 @@ public final class JavaVersion { /** * The major version of Java installation. * - * @see org.jackhuang.hmcl.util.platform.JavaVersion#JAVA_11 - * @see org.jackhuang.hmcl.util.platform.JavaVersion#JAVA_10 - * @see org.jackhuang.hmcl.util.platform.JavaVersion#JAVA_9 * @see org.jackhuang.hmcl.util.platform.JavaVersion#JAVA_8 * @see org.jackhuang.hmcl.util.platform.JavaVersion#JAVA_7 * @see org.jackhuang.hmcl.util.platform.JavaVersion#UNKNOWN @@ -88,22 +86,20 @@ public final class JavaVersion { } private static final Pattern REGEX = Pattern.compile("version \"(?(.*?))\""); + private static final Pattern VERSION = Pattern.compile("^(?[0-9]+)"); public static final int UNKNOWN = -1; public static final int JAVA_7 = 70; public static final int JAVA_8 = 80; - public static final int JAVA_9 = 90; - public static final int JAVA_10 = 100; - public static final int JAVA_11 = 110; + public static final int JAVA_9_AND_LATER = 90; private static int parseVersion(String version) { - if (version.startsWith("11")) - return JAVA_11; - else if (version.startsWith("10")) - return JAVA_10; - else if (version.startsWith("9")) - return JAVA_9; - else if (version.contains("1.8")) + Matcher matcher = VERSION.matcher(version); + if (matcher.find()) { + int head = Lang.parseInt(matcher.group(), -1); + if (head > 1) return JAVA_9_AND_LATER; + } + if (version.contains("1.8")) return JAVA_8; else if (version.contains("1.7")) return JAVA_7;