我在java和cygwin的帮助下运行shell脚本。当我在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
答案 0 :(得分: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();
答案 1 :(得分:0)
在任何Windows路径声明之前,您必须将cygwin的bin目录添加到PATH环境变量中。
PATH=c:\cygwin\bin:RestWindowsPathVariables