diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java index 646f13cc3..36867596b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/SelfDependencyPatcher.java @@ -79,18 +79,34 @@ public final class SelfDependencyPatcher { static class DependencyDescriptor { - // private static final String REPOSITORY_URL = System.getProperty("hmcl.openjfx.repo", "https://maven.aliyun.com/repository/central/"); private static final Path DEPENDENCIES_DIR_PATH = HMCL_DIRECTORY.resolve("dependencies"); + public static final String CURRENT_ARCH_CLASSIFIER = currentArchClassifier(); + private static String currentArchClassifier() { - switch (OperatingSystem.CURRENT_OS) { - case LINUX: - return "linux"; - case OSX: - return "mac"; - default: - return "win"; + if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) { + switch (Architecture.CURRENT) { + case X86_64: + return "linux"; + case ARM64: + return "linux-aarch64"; + } + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.OSX) { + switch (Architecture.CURRENT) { + case X86_64: + return "mac"; + case ARM64: + return "mac-aarch64"; + } + } else if (OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) { + switch (Architecture.CURRENT) { + case X86_64: + return "win"; + case X86: + return "win-x86"; + } } + return null; } public String module; @@ -100,14 +116,23 @@ public final class SelfDependencyPatcher { public Map sha1; public String filename() { - return artifactId + "-" + version + "-" + currentArchClassifier() + ".jar"; + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } + return artifactId + "-" + version + "-" + CURRENT_ARCH_CLASSIFIER + ".jar"; } public String sha1() { - return sha1.get(currentArchClassifier()); + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } + return sha1.get(CURRENT_ARCH_CLASSIFIER); } public Path localPath() { + if (CURRENT_ARCH_CLASSIFIER == null) { + return null; + } return DEPENDENCIES_DIR_PATH.resolve(filename()); } } @@ -192,9 +217,8 @@ public final class SelfDependencyPatcher { throw new IncompatibleVersionException(); } - // We can only self-patch JavaFX on x86-64 platform. - // For ARM support, user's manual patch is required. - if (Architecture.CURRENT != Architecture.X86_64) { + // We can only self-patch JavaFX on specific platform. + if (DependencyDescriptor.CURRENT_ARCH_CLASSIFIER == null) { throw new IncompatibleVersionException(); }