From 64d9fa7c6b37596f262768473f5657a426a15d22 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sun, 14 Jun 2020 19:51:46 +0800 Subject: [PATCH] fix: #729 --- .../java/org/jackhuang/hmcl/upgrade/RemoteVersion.java | 3 ++- .../jackhuang/hmcl/download/game/LibraryDownloadTask.java | 3 ++- .../org/jackhuang/hmcl/util/platform/SystemUtils.java | 4 ++++ README.md | 8 ++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/RemoteVersion.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/RemoteVersion.java index 6a7c0df66..82142b8ef 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/RemoteVersion.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/RemoteVersion.java @@ -23,6 +23,7 @@ import com.google.gson.JsonParseException; import org.jackhuang.hmcl.task.FileDownloadTask.IntegrityCheck; import org.jackhuang.hmcl.util.gson.JsonUtils; import org.jackhuang.hmcl.util.io.NetworkUtils; +import org.jackhuang.hmcl.util.platform.SystemUtils; import java.io.IOException; import java.util.Optional; @@ -37,7 +38,7 @@ public class RemoteVersion { String jarHash = Optional.ofNullable(response.get("jarsha1")).map(JsonElement::getAsString).orElse(null); String packXZUrl = Optional.ofNullable(response.get("packxz")).map(JsonElement::getAsString).orElse(null); String packXZHash = Optional.ofNullable(response.get("packxzsha1")).map(JsonElement::getAsString).orElse(null); - if (packXZUrl != null && packXZHash != null) { + if (SystemUtils.JRE_CAPABILITY_PACK200 && packXZUrl != null && packXZHash != null) { return new RemoteVersion(version, packXZUrl, Type.PACK_XZ, new IntegrityCheck("SHA-1", packXZHash)); } else if (jarUrl != null && jarHash != null) { return new RemoteVersion(version, jarUrl, Type.JAR, new IntegrityCheck("SHA-1", jarHash)); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java index e202f2d8c..871d17942 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/LibraryDownloadTask.java @@ -28,6 +28,7 @@ import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.util.io.FileUtils; import org.jackhuang.hmcl.util.io.IOUtils; import org.jackhuang.hmcl.util.io.NetworkUtils; +import org.jackhuang.hmcl.util.platform.SystemUtils; import org.tukaani.xz.XZInputStream; import java.io.*; @@ -125,7 +126,7 @@ public class LibraryDownloadTask extends Task { } } - if (testURLExistence(url)) { + if (SystemUtils.JRE_CAPABILITY_PACK200 && testURLExistence(url)) { List urls = dependencyManager.getDownloadProvider().injectURLWithCandidates(url + ".pack.xz"); task = new FileDownloadTask(urls, xzFile, null); task.setCacheRepository(cacheRepository); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemUtils.java index ec4766eb9..b1dd73bfb 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/SystemUtils.java @@ -17,6 +17,8 @@ */ package org.jackhuang.hmcl.util.platform; +import org.jackhuang.hmcl.util.Lang; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -26,6 +28,8 @@ import java.util.List; public final class SystemUtils { private SystemUtils() {} + public static final boolean JRE_CAPABILITY_PACK200 = Lang.test(() -> Class.forName("java.util.jar.Pack200")); + public static int callExternalProcess(String... command) throws IOException, InterruptedException { return callExternalProcess(Arrays.asList(command)); } diff --git a/README.md b/README.md index 4817b27d4..cece0897c 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,14 @@ If you want to submit a pull request, there're some requirements: * Compiler: Java 1.8. * Do NOT modify `gradle` files. +### Compilation + +Simply execute following command: +```bash +./gradlew clean build +``` +Make sure you have Java installed with Pack200 and JavaFX 8 at least. Liberica full JDK 8~11 is recommended. + ## JVM Options (for debugging) |Parameter|Description| |---------|-----------|