使用流程构建器来获取该流程的流

问题描述 投票:0回答:1

我正在使用一种常见的解决方案,即使用 BufferedReader 类来获取输入流,但似乎如果我可以看到命令控制台在应用程序运行时打开,我无法获取其中的内容,没有数据在变量中,它卡在 readline() 步骤,肯定是因为应用程序不断运行时数据没有刷新

public static void executeCommandOnLocalMachine(ProcessBuilder builder) throws Exception {
    builder.redirectErrorStream(true);
    Process process = builder.start();
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line = reader.readLine();
    while (line != null) {
        Log.info(line);
        if(line.toLowerCase().contains("started"))
            break;
        line = reader.readLine();

    }
}

呼叫者

public static String START_APPLICATION_MANAGER_COMMAND ="cd /D %VARENV%/../Application && start java -jar application.jar";


public static void startApplicationManager() throws Exception {
            ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/C", GeneralConstants.START_APPLICATION_COMMAND);

    ProcessManager.executeCommandOnLocalMachine(builder);
}
java selenium-webdriver bufferedreader processbuilder
1个回答
0
投票

如果您使用 cmd

start
,cmd 会在一个全新的窗口中启动该进程,因此要访问进程输出,只需关闭
start
即可。

© www.soinside.com 2019 - 2024. All rights reserved.