【问题标题】:Displaying the directory list显示目录列表
【发布时间】:2012-06-28 04:31:25
【问题描述】:

在 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: 目录: 找不到命令

谁能告诉我这段代码有什么问题?

【问题讨论】:

    标签: command cygwin sh processbuilder dir


    【解决方案1】:

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

    这很好,但是如果您改为登录 Cygwin,Cygwin 进程没有相同的$PATH。这就是sh 找不到dir 命令的原因。

    尝试改变这个:

    command.add("dir");
    

    到这里:

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

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

    另一种方法是在sh 进程中设置$PATH,例如通过如下方式调用它:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-18
      • 2013-12-09
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2015-03-23
      • 2015-08-25
      相关资源
      最近更新 更多