繁体   English   中英

如何使用Java应用程序在Mac OS X上打开System Profiler.app?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM