2012-06-28 3 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(); 

но выход есть; ..Error .. /usr/bin/sh: dir: команда не найдена

Может кто-нибудь сказать мне, в чем проблема с этим кодом?

ответ

0

Вы вызываете C:\cygwin\bin\sh, оболочку Cygwin Bourne, из программы не Cygwin.

Это нормально, но процесс Cygwin не имеет того же $PATH, если бы вы вошли в Cygwin. Вот почему sh не может найти команду dir.

Попробуйте изменить это:

command.add("dir"); 

к этому:

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

Обратите внимание, что "/ bin/реж" это путь Cygwin стиле для dir команды, которая является то, что sh признает.

В качестве альтернативы можно установить $PATH в sh процессе, например, запустив его:

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

(. Я оставлю вас, чтобы перевести это в форму, пригодную с ProcessBuilder)