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