From 6f40335322db7dd3d6fe3106d64ebbd4722a5dd1 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sat, 31 Jul 2021 02:00:13 +0800 Subject: [PATCH] feat: print more effective logs when OptiFine Patcher failed to patch game. --- .../hmcl/download/optifine/OptiFineInstallTask.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java index bd9cfd496..8d47c882c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/optifine/OptiFineInstallTask.java @@ -25,6 +25,7 @@ import org.jackhuang.hmcl.task.FileDownloadTask; import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.util.io.CompressingUtils; import org.jackhuang.hmcl.util.io.FileUtils; +import org.jackhuang.hmcl.util.platform.CommandBuilder; import org.jackhuang.hmcl.util.platform.JavaVersion; import org.jackhuang.hmcl.util.platform.SystemUtils; import org.jenkinsci.constant_pool_scanner.ConstantPool; @@ -133,7 +134,7 @@ public final class OptiFineInstallTask extends Task { boolean hasLaunchWrapper = false; try (FileSystem fs = CompressingUtils.createReadOnlyZipFileSystem(dest)) { if (Files.exists(fs.getPath("optifine/Patcher.class"))) { - int exitCode = SystemUtils.callExternalProcess( + String[] command = { JavaVersion.fromCurrentEnvironment().getBinary().toString(), "-cp", dest.toString(), @@ -141,9 +142,10 @@ public final class OptiFineInstallTask extends Task { gameRepository.getVersionJar(version).getAbsolutePath(), dest.toString(), gameRepository.getLibraryFile(version, optiFineLibrary).toString() - ); + }; + int exitCode = SystemUtils.callExternalProcess(command); if (exitCode != 0) - throw new IOException("OptiFine patcher failed"); + throw new IOException("OptiFine patcher failed, command: " + new CommandBuilder().addAll(Arrays.asList(command))); } else { FileUtils.copyFile(dest, gameRepository.getLibraryFile(version, optiFineLibrary).toPath()); }