Настройка среды для ProcessBuilder

У меня странная проблема с настройкой среды Linux из Java (1.6); в частности, переменная "PATH".

Короче говоря, у меня есть конвейер для запуска собственных процессов, который использует java.lang.ProcessBuilder. Пользователь может дополнительно установить переменные среды через HashMapс именем environment:

ProcessBuilder pb = new ProcessBuilder(args);
Map<String, String> env = pb.environment();
if (environment != null)
   env.putAll(environment);
Process process = pb.start();

Переменная envустанавливается правильно, если я вывожу ее на консоль, с правильным значением переменной PATH. Однако запуск процесса приводит к возникновению Exception:

java.io.IOException: error=2, Нет такого файла или каталога

Тот же процесс работает нормально с идентичными переменными среды в терминале оболочка. Чтобы проверить это, я запустил Eclipse ПОСЛЕ настройки среды в терминале.В этом случае процесс ProcessBuilderвыполняется корректно.

Итак, что должно произойти, так это то, что ProcessBuilderиспользует не среду, которую я для него установил, а вместо этого текущую системную среду.

Я не могу найти удовлетворительных ответов на эту проблему в Интернете. Возможно, это проблема конкретной ОС? Или я что-то еще упускаю?

10
задан Andrew Reid 5 April 2012 в 20:17
поделиться