2012-06-28 91 views
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:找不到命令

有人可以告訴我這段代碼有什麼問題嗎?

回答

0

你調用C:\cygwin\bin\sh,在Cygwin Bourne shell中,從非Cygwin的程序。

這很好,但Cygwin的進程沒有,如果你不是登錄到Cygwin的將具有相同的$PATH。這就是爲什麼sh找不到dir命令。

嘗試改變這一點:

command.add("dir"); 

這樣:

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

注意, 「/斌/ dir」 是爲dir命令,這是什麼sh識別Cygwin的風格的路徑。

另一種方法是通過調用它來設置$PATHsh過程,例如:

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

(我將讓你來翻譯成用的ProcessBuilder使用的形式)