diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaPackageType.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaPackageType.java index 42cc195d8..1512a1705 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaPackageType.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/JavaPackageType.java @@ -21,10 +21,10 @@ package org.jackhuang.hmcl.download.java; * @author Glavo */ public enum JavaPackageType { - JDK(true, false), JRE(false, false), - JDKFX(true, true), - JREFX(false, true); + JDK(true, false), + JREFX(false, true), + JDKFX(true, true); private final boolean jdk; private final boolean javafx; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java index d4f333b34..adfd14cde 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoFetchJavaListTask.java @@ -46,22 +46,27 @@ public final class DiscoFetchJavaListTask extends Task fetchPackagesTask; public DiscoFetchJavaListTask(DownloadProvider downloadProvider, DiscoJavaDistribution distribution, Platform platform, JavaPackageType packageType) { this.distribution = distribution; + this.packageType = packageType.isJDK() ? "jdk" : "jre"; + this.isJavaFXBundled = packageType.isJavaFXBundled(); + this.archiveType = platform.getOperatingSystem() == OperatingSystem.WINDOWS ? "zip" : "tar.gz"; HashMap params = new HashMap<>(); params.put("distribution", distribution.getApiParameter()); - params.put("package", packageType.isJDK() ? "jdk" : "jre"); - params.put("javafx_bundled", Boolean.toString(packageType.isJavaFXBundled())); + params.put("package", this.packageType); + params.put("javafx_bundled", Boolean.toString(isJavaFXBundled)); params.put("operating_system", getOperatingSystemName(platform.getOperatingSystem())); params.put("architecture", getArchitectureName(platform.getArchitecture())); - params.put("archive_type", platform.getOperatingSystem() == OperatingSystem.WINDOWS ? "zip" : "tar.gz"); + params.put("archive_type", archiveType); params.put("directly_downloadable", "true"); - if (platform.getOperatingSystem() == OperatingSystem.LINUX) { + if (platform.getOperatingSystem() == OperatingSystem.LINUX) params.put("lib_c_type", "glibc"); - } this.fetchPackagesTask = new GetTask(downloadProvider.injectURLWithCandidates(NetworkUtils.withQuery(API_ROOT + "/packages", params))); } @@ -79,6 +84,13 @@ public final class DiscoFetchJavaListTask extends Task map = new TreeMap<>(); for (DiscoJavaRemoteVersion version : result) { + if (!distribution.getApiParameter().equals(version.getDistribution()) + || !version.isDirectlyDownloadable() + || !packageType.equals(version.getPackageType()) + || !archiveType.equals(version.getArchiveType()) + || isJavaFXBundled != version.isJavaFXBundled()) + continue; + if (!distribution.testVersion(version)) continue; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java index 52d013bf1..49a5005f3 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/java/disco/DiscoJavaDistribution.java @@ -43,7 +43,7 @@ public enum DiscoJavaDistribution implements JavaDistribution