Почему я не могу запустить Cygwin .exe напрямую с Java на Windows? - PullRequest
0 голосов
/ 22 февраля 2019

Я установил Cygwin, но не могу получить доступ к каким-либо командам напрямую.Например, приведенный ниже процесс не запускается из-за того, что bash.exe не найден, хотя я указываю его абсолютный путь.Я знаю, что он установлен правильно, так как я вижу этот путь в проводнике.Однако поиск любого файла cygwin не возвращает никаких попаданий, что является странным.

ProcessBuilder pb = new ProcessBuilder("C:\\cygwin64\\bin\\bash.exe", "-c", "ls");
Process p = pb.start();

java.io.IOException: Cannot run program "‪C:\cygwin64\bin\bash.exe" (in directory "C:\Users\tyea1\Documents\Log Bundles\latest_PRODXIO01"): CreateProcess error=2, The system cannot find the file specified

Если я добавлю bin cygwin в переменную PATH Windows, я смогу успешно выполнить "ls" с помощью

ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "ls");
Process p = pb.start();

Я все еще не могу получить доступ к bash.exe напрямую, когда он находится в ПУТИ.

Я не понимаю, что здесь происходит и почему я не могу выполнить bash.exe напрямую.

1 Ответ

0 голосов
/ 27 февраля 2019

Я не совсем ответил на свой вопрос, но нашел что-то, что работает.С помощью cygwin \ bin в Windows PATH моя строка компоновщика процессов выглядит следующим образом:

[cmd, / c, C: \ cygwin64 \ bin \ sh.exe, -c, ls]

Кажется, это работает.Я использую sh.exe вместо bash.exe, чтобы я мог использовать все файлы bin cygwin.

...