diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java b/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java index 3bc9ab58c..215935258 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/java/JavaManager.java @@ -209,9 +209,18 @@ public final class JavaManager { public static Task getUninstallJavaTask(JavaRuntime java) { assert java.isManaged(); - Path root = REPOSITORY.getPlatformRoot(java.getPlatform()); - Path relativized = root.relativize(java.getBinary()); + Path platformRoot; + try { + platformRoot = REPOSITORY.getPlatformRoot(java.getPlatform()).toRealPath(); + } catch (Throwable ignored) { + return Task.completed(null); + } + + if (!java.getBinary().startsWith(platformRoot)) + return Task.completed(null); + + Path relativized = platformRoot.relativize(java.getBinary()); if (relativized.getNameCount() > 1) { FXUtils.runInFX(() -> { try {