为什么我不能在Windows上直接用Java执行Cygwin .exe?

问题描述 投票:0回答:1

我已经安装了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

如果我将cygwin的bin添加到Windows PATH变量,我可以通过成功执行“ls”

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

当它在PATH中时,我仍然无法直接访问bash.exe。

我不明白这里发生了什么以及为什么我不能直接执行bash.exe。

java windows cygwin processbuilder
1个回答
0
投票

我没有完全回答我自己的问题,但发现了一些有效的方法。使用Windows PATH中的cygwin \ bin,我的进程构建器字符串是:

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

这似乎有效。我正在使用sh.exe而不是bash.exe,以便我可以使用所有cygwin的bin文件。

© www.soinside.com 2019 - 2024. All rights reserved.