我制作了一个Mac OS X(本机)应用程序,它在STDOUT上写了一行。
在Java程序中,我需要启动该应用程序并获取它在标准输出上写的内容。
以下代码适用于Windows应用程序,但不适用于Mac OS X应用程序。
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();
p.waitFor();
BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
result = is.readLine();
我做错了什么?
编辑:命令为open -W -n MyApp.app --args myargs
答案 0 :(得分:2)
我不知道为什么它可以诚实地在Windows上运行。 waitFor将等待进程完成运行。那个时候stdout不再存在了。
你应该尝试切换waitFor调用和读取流。
编辑:我现在没有Mac测试,但我不确定open
命令是否实际输出应用程序的stdout。您可能必须直接在.app包中启动二进制文件。大部分时间它都是MyApp.app/Contents/MacOS/myapp args