3

Java と cygwin を使用してシェル スクリプトを実行しています。Windows XP でコードを実行すると、問題なく動作します。今、私はWindows 7で同じコードを実行しようとしていますが、上記のエラーが発生しています。

(java.io.IOException)java.io.IOException:
Cannot run program "sh" (in directory"c:\cygwin\bin\test"):
CreateProcess error=2.The system cannot find file specified

このエラーが発生した理由.cygwin のパスを設定しました(PATH=.;c:\cygwin\bin)これを回避する方法.

ProcessBuilder pb = new ProcessBuilder ();
pb.directory(new File("C:\\cygwin\\bin\\Test\\"));
File shellfile = new File("app.sh");//File name with extension
System.out.println(shellfile.getCanonicalPath());

しかし、それはE:\NIRAJ\example\app.sh私のJavaプログラムにある出力を提供しています。私も pb.directory をパスに設定しています。

チェックするSystem.out.print(pb.directory());と、出力が得られますC:\cygwin\bin\Test

4

2 に答える 2

1

PATH 変数では、cygwin の bin ディレクトリを他の Windows のパスのに置く必要があります。

これを行う:

PATH=c:\cygwin\bin:RestWindowsPaths

しないこと:

PATH=RestWindowsPathVariables:c:\cygwin\bin
于 2013-03-28T19:05:58.903 に答える
0

最初に、指定されたファイルのパスを取得して、それを確認してください。

よくわかりませんが、これはあなたを一歩先に導くかもしれません:

File file = new File("app.sh");//File name with extension
System.out.println(file.getCanonicalPath());

これは印刷する必要があります:c:\cygwin\bin\test また、代わりにこのような区切り記号を使用します:c:\\cygwin\\bin\\test

お役に立てれば。

アップデート

String myCommand = "c:\\cygwin\\bin\\test\\cygbin";
String myArg = PATH_TO_shellscript+"app.sh";
ProcessBuilder p = new ProcessBuilder(myCommand, myArg).start();
于 2012-02-23T08:54:39.633 に答える