Как открыть System Profiler.app в Mac OS X с помощью приложения Java? - PullRequest
1 голос
/ 29 марта 2011

Мне нужно показать системную информацию для моего Mac OS X из моего приложения Java.

Я создал кнопку и пытаюсь выполнить следующее:

private static String[] sysInfoPathMac =
    {"/usr/bin/open", "'/Applications/Utilities/System Profiler.app'"};

В случае нажатия кнопки я выполняю следующую команду:

Runtime.getRuntime().exec(sysInfoPathMac);

Я ничего не получаю после нажатия кнопки. Он не выдает никакой ошибки и не запускает системный профилировщик.

Что именно я делаю не так и как это сделать?

1 Ответ

1 голос
/ 30 марта 2011

Удалить одинарные кавычки.Когда вы запускаете команду из оболочки, кавычки необходимы, потому что в аргументе есть пробел.Это не проблема при запуске процесса из 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» не выдает много выходных данных).Подробнее об этом читайте в статье Майкла С. Даконты «Когда Runtime.exec () не будет» http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...