在一个项目中,我需要从另一个Java应用程序执行一个Java应用程序。到目前为止,一切都很好。现在我陷入了困境,前者需要从控制台获取后者的日志。
第二个代码的执行由以下代码片段处理:
ArrayList<String> commands = new ArrayList<>();
commands.add("javaw");
commands.addAll(data.returnPropertiesAsPrefixedStringList());
commands.add("-cp");
commands.add(data.getClasspathJar().toString());
commands.add("[PathToMainClass]");
//data.getArgs for example contains the path to the second java (jnlp) file
commands.addAll(data.getArgs());
ProcessBuilder java = new ProcessBuilder().inheritIO().command(commands);
Process start = java.start();
我现在如何获取“开始”写入控制台的日志?由于我不太了解要搜索的内容,因此无法找到合适的答案。
编辑:
我已经尝试获取类似的日志,但是没有用。日志根本无法识别。
Process start = java.start();
BufferedReader input = new BufferedReader(new InputStreamReader(start.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
System.out.println("It Did Work: " + line);
}
预先感谢您的帮助。
-IHaveNoClue
答案 0 :(得分:1)
进程具有getInputStream()
操作,因此您可以使用输入流读取器访问此数据。另外,也许该讨论会为您提供帮助:printing-runtime-exec-outputstream-to-console