diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index a7eeafb51..53409aa8c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -27,11 +27,7 @@ import org.jackhuang.hmcl.util.gson.UUIDTypeAdapter; import org.jackhuang.hmcl.util.io.FileUtils; import org.jackhuang.hmcl.util.io.IOUtils; import org.jackhuang.hmcl.util.io.Unzipper; -import org.jackhuang.hmcl.util.platform.CommandBuilder; -import org.jackhuang.hmcl.util.platform.JavaVersion; -import org.jackhuang.hmcl.util.platform.ManagedProcess; -import org.jackhuang.hmcl.util.platform.OperatingSystem; -import org.jackhuang.hmcl.util.platform.Bits; +import org.jackhuang.hmcl.util.platform.*; import org.jackhuang.hmcl.util.versioning.VersionNumber; import java.io.*; @@ -459,7 +455,7 @@ public class DefaultLauncher extends Launcher { if (StringUtils.isNotBlank(options.getPreLaunchCommand())) { ProcessBuilder builder = new ProcessBuilder(StringUtils.tokenize(options.getPreLaunchCommand())).directory(runDirectory); builder.environment().putAll(getEnvVars()); - builder.start().waitFor(); + SystemUtils.callExternalProcess(builder); } Process process; 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 b9f356f3d..69bae15dc 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 @@ -31,7 +31,11 @@ public final class SystemUtils { } public static int callExternalProcess(List command) throws IOException, InterruptedException { - ManagedProcess managedProcess = new ManagedProcess(new ProcessBuilder(command)); + return callExternalProcess(new ProcessBuilder(command)); + } + + public static int callExternalProcess(ProcessBuilder processBuilder) throws IOException, InterruptedException { + ManagedProcess managedProcess = new ManagedProcess(processBuilder); managedProcess.pumpInputStream(SystemUtils::onLogLine); managedProcess.pumpErrorStream(SystemUtils::onLogLine); return managedProcess.getProcess().waitFor();