我必须从 Java 应用程序显示 Mac OS X 的系统信息。
我创建了一个按钮并尝试执行以下操作:
private static String[] sysInfoPathMac =
{"/usr/bin/open", "'/Applications/Utilities/System Profiler.app'"};
在按钮的单击事件中,我执行以下命令:
Runtime.getRuntime().exec(sysInfoPathMac);
单击按钮后我什么也没有得到。它不会抛出任何错误,也不运行系统分析器。
我到底做错了什么以及如何完成它?
最佳答案
删除单引号。当您从 shell 运行该命令时,需要使用引号,因为参数中包含空格。从 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() Won't” http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
关于java - 如何使用 Java 应用程序在 Mac OS X 上打开 System Profiler.app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477949/