From 66cbb23a382359c93cb95692886eda2cc0cb719c Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Tue, 24 May 2022 01:09:10 +0800 Subject: [PATCH] fix(java): broken macos java location. --- .../hmcl/download/java/JavaRepository.java | 2 +- .../jackhuang/hmcl/util/platform/JavaVersion.java | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java index 214872a7e..e96a35688 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaRepository.java @@ -59,7 +59,7 @@ public final class JavaRepository { return Stream.of(FileUtils.tryGetPath(System.getProperty("user.home", ".minecraft/runtime"))); case OSX: return Stream.of(FileUtils.tryGetPath("/Library/Application Support/minecraft/runtime"), - FileUtils.tryGetPath(System.getProperty("user.home"), "/Library/Application Support/minecraft/runtime")); + FileUtils.tryGetPath(System.getProperty("user.home"), "Library/Application Support/minecraft/runtime")); default: return Stream.empty(); } 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 e89666707..4e39a4356 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 @@ -111,6 +111,8 @@ public final class JavaVersion { private static final Pattern OS_ARCH = Pattern.compile("os\\.arch = (?.*)"); private static final Pattern JAVA_VERSION = Pattern.compile("java\\.version = (?.*)"); + private static final String JAVA_EXECUTABLE = OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS ? "java.exe" : "java"; + public static final int UNKNOWN = -1; public static final int JAVA_6 = 6; public static final int JAVA_7 = 7; @@ -206,11 +208,7 @@ public final class JavaVersion { } public static Path getExecutable(Path javaHome) { - if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { - return javaHome.resolve("bin").resolve("java.exe"); - } else { - return javaHome.resolve("bin").resolve("java"); - } + return javaHome.resolve("bin").resolve(JAVA_EXECUTABLE); } public static JavaVersion fromCurrentEnvironment() { @@ -306,8 +304,6 @@ public final class JavaVersion { // 3. PATH List> javaExecutables = new ArrayList<>(); - String javaExe = OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS ? "java.exe" : "java"; - switch (OperatingSystem.CURRENT_OS) { case WINDOWS: javaExecutables.add(queryJavaHomesInRegistryKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\").stream().map(JavaVersion::getExecutable)); @@ -359,14 +355,14 @@ public final class JavaVersion { // Search in PATH. if (System.getenv("PATH") != null) { javaExecutables.add(Arrays.stream(System.getenv("PATH").split(OperatingSystem.PATH_SEPARATOR)) - .flatMap(path -> Lang.toStream(FileUtils.tryGetPath(path, javaExe)))); + .flatMap(path -> Lang.toStream(FileUtils.tryGetPath(path, JAVA_EXECUTABLE)))); } // Search in HMCL_JRES, convenient environment variable for users to add JRE in global // May be removed when we implement global Java configuration. if (System.getenv("HMCL_JRES") != null) { javaExecutables.add(Arrays.stream(System.getenv("HMCL_JRES").split(OperatingSystem.PATH_SEPARATOR)) - .flatMap(path -> Lang.toStream(FileUtils.tryGetPath(path, "bin", javaExe)))); + .flatMap(path -> Lang.toStream(FileUtils.tryGetPath(path, "bin", JAVA_EXECUTABLE)))); } return javaExecutables.parallelStream().flatMap(stream -> stream); }