Переменная $ PATH не наследуется через getRuntime (). Exec - PullRequest
4 голосов
/ 08 августа 2011

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

proc = Runtime.getRuntime().exec(cmd, null, fwrkDir);

Команда, набранная в консоли, работает без нареканий. Но здесь он, похоже, не находит скрипт, хотя его путь добавляется в переменную $ PATH. Разве Java автоматически не наследует все такие переменные, если значение NULL передается как Environment?

Ответы [ 3 ]

5 голосов
/ 19 июля 2012
proc = Runtime.getRuntime().exec(cmd, null, fwrkDir);

должно быть

proc = Runtime.getRuntime().exec(cmd, "PATH=$PATH:/android-sdk-linux_x86/platform-tools", fwrkDir);
3 голосов
/ 08 августа 2011

Обратите внимание, что вторым параметром для вызова exec () в вашем примере является null.Второй параметр - это то, где вы устанавливаете среду для команды, которую вы выполняете.Если вы используете Java 6, рассмотрите возможность использования ProcessBuilder .

1 голос
/ 10 августа 2011

Нашел решение сам.Вместо того, чтобы изменять переменную $ PATH в .bashsrc, мне пришлось изменить переменную $ PATH в / etc / profile, добавив

PATH=$PATH:/android-sdk-linux_x86/platform-tools

Кто-нибудь знает, почему Java нуждается в глобальном изменении пути?Спасибо за ваши ответы, хотя!

...