Он унаследует путь от процесса Java. Таким образом, независимо от среды, в которой находится процесс Java, порожденный процесс также будет иметь место. Вот как проверить среду:
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
Вы установили PATH
и экспортировали его? Если вы не экспортируете его, он недоступен подпроцессам.
Кроме того, вы должны использовать stdout и stderr одновременно, чтобы предотвратить блокировку. В противном случае вещи будут работать при некоторых обстоятельствах, тогда ваш порожденный процесс выведет другое количество данных, и все остановится.
См. этот ответ для более подробной информации.