Процесс не найден при запуске из getRuntime.exec () из JVM - PullRequest
4 голосов
/ 24 апреля 2009

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

Process process = Runtime.getRuntime().exec("gs");

Однако я получаю исключение:

java.io.IOException: не удается запустить программа "gs": ошибка = 2, такого файла нет или каталог

Запуск gs из командной строки (OS X) прекрасно работает из любого каталога, как и в моем PATH. Кажется, что eclipse не знает о моей переменной окружения пути, хотя я вошел в настройки запуска и выбрал PATH на вкладке среды.

В дополнительных усилиях по устранению этой проблемы я попробовал следующий код:

Process process = Runtime.getRuntime().exec("echo $PATH");
InputStream fromStdout = process.getInputStream();
byte[] byteArray = IOUtils.toByteArray(fromStdout);
System.out.println(new String(byteArray));

Вывод был $ PATH, хм. Может ли кто-нибудь подтолкнуть меня в правильном направлении?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2009

вы предполагаете, что exec () использует оболочку для выполнения ваших команд (echo $ PATH - это команда оболочки); для простоты вы можете использовать System.getenv (), чтобы увидеть ваш $ PATH:

    System.out.println(System.getenv("PATH"));

EDIT

Часто лучшей и гибкой альтернативой Runtime.exec () является класс ProcessBuilder .

1 голос
/ 11 января 2012

У меня была такая же проблема, и я нашел проблему. Переменная Path в Eclipse имела содержимое, отличное от того, которое было в командной строке.

Решение:

Найдите переменную $ Path в командной строке и скопируйте содержимое. Затем откройте Run Configuration-> Environment и выберите новый. Имя: $ PATH Значение: вставить скопированный контент.

Это решило проблему.

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