Я пытаюсь получить полный путь системных программ, используя следующий код Java:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class PathExtractor {
public static void main(String[] args) throws Exception {
ProcessBuilder processBuilder = new ProcessBuilder("which", "mvn");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
process.waitFor();
try (BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
System.out.println(in.readLine());
}
}
}
При компиляции и запуске из командной строки выводится ожидаемый результат:
/ USR / местные / бен / МВН
Однако при запуске в Eclipse я получаю значение выхода 1 со следующим выводом:
нуль
После небольшого исследования я нашел похожий вопрос: этот ответ предлагает запустить оболочку для запуска предыдущей команды:
new ProcessBuilder("/bin/sh", "-c", "which mvn")
К сожалению, команда все еще не работает с выводом null
. Обратите внимание, что на компьютере под управлением Windows просто использование new ProcessBuilder («где», «mvn») дает желаемый эффект.
Как определить программный путь программ из Eclipse?