Переменная $PATH не наследуется через getRuntime ().выполнение


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

proc = Runtime.getRuntime().exec(cmd, null, fwrkDir);
Команда, набранная в консоли, работает безупречно. Но здесь он, похоже, не находит скрипт, хотя его путь добавляется к переменной $PATH. Разве Java не наследует автоматически все такие переменные, если null передается как Environment?
3 2

3 ответа:

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

Должно быть

proc = Runtime.getRuntime().exec(cmd, "PATH=$PATH:/android-sdk-linux_x86/platform-tools", fwrkDir);

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

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

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

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