[英]How to open System Profiler.app on Mac OS X using a Java application?
我必须从我的Java应用程序中显示Mac OS X的系统信息。
我创建了一个按钮并尝试执行以下命令:
private static String[] sysInfoPathMac =
{"/usr/bin/open", "'/Applications/Utilities/System Profiler.app'"};
在按钮的点击事件中,我执行以下命令:
Runtime.getRuntime().exec(sysInfoPathMac);
单击按钮后,我什么也没得到。 它不会引发任何错误,也不会运行系统分析器。
我到底在做什么错,以及如何解决?
删除单引号。 当您从外壳程序运行命令时,需要使用引号,因为参数中有空格。 从Java启动过程时,这不是问题,因为数组的每个元素都被视为一个单独的参数,而不管其是否包含空格。
String[] command = {"/usr/bin/open", "/Applications/Utilities/System Profiler.app"};
Process proc = Runtime.getRuntime().exec(command);
int resultCode = proc.waitFor();
if (resultCode != 0) {
throw new Exception("failed to open system profiler");
}
请注意,通常在使用Runtime.exec()时,您将希望使用stdout和stderr流来避免死锁(尽管在这种情况下这不是问题,因为“ open”命令不会产生太多输出)。 有关此主题的更多信息,请查看Michael C. Daconta的文章“ When Runtime.exec()不会” http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.