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: コマンドが見つかりません

このコードの問題点を誰か教えてもらえますか?

4

1 に答える 1

0

C:\cygwin\bin\sh非 Cygwin プログラムから、Cygwin Bourne シェルを呼び出しています。

$PATHそれは問題ありませんが、代わりに Cygwin にログインした場合と同じように、Cygwin プロセスは動作しません。そのため、コマンドshが見つかりません。dir

これを変更してみてください:

command.add("dir");

これに:

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

「/bin/dir」は、認識されるdirコマンドの Cygwin スタイルのパスであることに注意してくださいsh

$PATH別の方法として、プロセスで設定することもできshます。たとえば、次のように呼び出します。

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

(それを Processbuilder で使用できる形式に変換するのはあなたに任せます。)

于 2012-08-01T22:06:34.257 に答える