线程“main”中的异常java.io.IOException:无法运行程序“D:/ cygwin / bin / bash”:CreateProcess error = 193,%1不是有效的Win32应用程序

时间:2011-12-06 13:18:12

标签: java cygwin

我可以在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();
}

1 个答案:

答案 0 :(得分:1)

根据评论中的建议,添加.exe会解决此问题,但删除bash.???文件也是如此。

bash.???的同一目录中有一个名为bash.exe的文件(我从未发现扩展名是什么),Runtime.exec()正在尝试执行该文件。

bash.???必须在成功执行后的某个时刻创建,因此它只运行一次然后失败。