0

在 Eclipse 中尝试以下程序。

List<String> command = new ArrayList<String>();
String fs = System.getProperty("file.separator");
command.add("C:\\cygwin" + fs + "bin" + fs + "sh");
command.add("-c");
command.add("dir");
ProcessBuilder builder = new ProcessBuilder(command);
final Process process = builder.start();

但输出是;..错误.. /usr/bin/sh: dir: command not found

有人可以告诉我这段代码有什么问题吗?

4

1 回答 1

0

您正在C:\cygwin\bin\sh从非 Cygwin 程序调用 Cygwin Bourne shell。

没关系,但是$PATH如果您改为登录 Cygwin,Cygwin 进程就不同了。这就是为什么sh找不到dir命令的原因。

尝试改变这个:

command.add("dir");

对此:

command.add("/bin/dir");

请注意,“/bin/dir”是dir命令的 Cygwin 样式路径,这是可以sh识别的。

另一种方法是$PATHsh过程中设置,例如通过调用它:

 C:\cygwin\bin\sh -c "PATH=/usr/bin dir"

(我会留给您将其转换为可用于 Processbuilder 的表单。)

于 2012-08-01T22:06:34.257 回答