我可以在java中使用Cygwin运行shell脚本。但现在我得到了以下信息。
Exception in thread "main" java.io.IOException: Cannot run program "D:/cygwin/bi
n/bash": CreateProcess error=193, %1 is not a valid Win32 application
如何避免此异常?
代码
{
String cmd;
cmd = "D:/cygwin/bin/bash -c'/bin/ls -la'";
System.out.println("EXECING: " + cmd);
p = Runtime.getRuntime().exec(cmd);
in = p.getInputStream();
br = new BufferedReader(new InputStreamReader(in));
System.out.println("OUT:");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
in = p.getErrorStream();
br = new BufferedReader(new InputStreamReader(in));
System.out.println("ERR:");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println();
}
答案 0 :(得分:1)
根据评论中的建议,添加.exe
会解决此问题,但删除bash.???
文件也是如此。
在bash.???
的同一目录中有一个名为bash.exe
的文件(我从未发现扩展名是什么),Runtime.exec()
正在尝试执行该文件。
bash.???
必须在成功执行后的某个时刻创建,因此它只运行一次然后失败。