Выполнение исполняемого Unix-файла Objective-C в Java (OS X) - PullRequest
0 голосов
/ 14 февраля 2011

Я уже видел этот вопрос и пытался следовать опубликованным решениям. К сожалению, они не работают. Я пытаюсь создать простую Java-программу, которая может запускать скомпилированную программу Objective C (исполняемый файл Unix) с входным параметром. Ниже приведены попытки Java, которые я пробовал, которые, похоже, не работают:

String[] cmd = {"/bin/bash", fullFilePath, Param};
Runtime.getRuntime().exec(cmd);

Это генерирует ошибку процессора 126 для "Вызванная команда не может быть выполнена". Я пробовал другие варианты, которые не работают так же хорошо, как:

String[] cmd = {"/bin/bash fullFilePath \"Param\""};
String[] cmd = {"/usr/bin/open fullFilePath \"Param\""};

Любые предложения или идеи о том, как я могу заставить это работать? Мне просто нужно запустить скомпилированную программу Objective-C на Java с параметром. Я подумал, что это не будет так сложно. Заранее спасибо, и если вам нужна дополнительная информация, просто спросите.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2011

Попробуйте использовать sh: -

String[] cmd = {"/bin/sh", "-c", fullFilePath, Param};
Runtime.getRuntime().exec(cmd);
0 голосов
/ 15 февраля 2011

Причина ошибки 126 - «Проблема с правами доступа или команда не является исполняемой».

Убедитесь, что ваш файл сначала выполняется из командной строки. Возможно, вам придется сначала установить бит выполнения, используя chmod.

chmod a+x <filename>
0 голосов
/ 14 февраля 2011

Есть ли какая-то особая причина, по которой вы выполняете свой исполняемый файл через командную строку? Будучи скорее человеком Windows, я могу что-то упустить, но наверняка должно работать только следующее:

String[] cmd = {fullFilePath, Param};
Runtime.getRuntime().exec(cmd);

(при условии, что fullFilePath действительно является полным абсолютным путем к вашему исполняемому файлу).

Кстати: тот факт, что другая программа написана на Objective-C, почти наверняка не имеет значения.

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