From b7da21e5ceb8ef71d3d397ce9d46ca604d8cb264 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 27 May 2021 00:17:08 +0800 Subject: [PATCH] fix: not select downloaded Java automatically. Closes #886. --- .../org/jackhuang/hmcl/game/LauncherHelper.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 a613969f2..438558cd2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -68,6 +68,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.RejectedExecutionException; +import java.util.logging.Level; import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.Lang.mapOf; @@ -326,7 +327,17 @@ public final class LauncherHelper { setting.setJavaVersion(acceptableJava.get()); } else { Controllers.dialog(i18n("launch.advice.require_newer_java_version", gameVersion.toString(), version.getJavaVersion().getMajorVersion()), i18n("message.warning"), MessageType.WARNING, () -> { - downloadJava(version.getJavaVersion(), profile).thenAccept(x -> onAccept.run()); + downloadJava(version.getJavaVersion(), profile) + .thenAcceptAsync(x -> { + try { + Optional newAcceptableJava = JavaVersion.getJavas().stream() + .filter(javaVersion -> javaVersion.getParsedVersion() >= version.getJavaVersion().getMajorVersion()) + .max(Comparator.comparing(JavaVersion::getVersionNumber)); + newAcceptableJava.ifPresent(setting::setJavaVersion); + } catch (InterruptedException e) { + LOG.log(Level.SEVERE, "Cannot list javas", e); + } + }, Platform::runLater).thenAccept(x -> onAccept.run()); }); flag = true; }