使用ProcessBuilder运行msys.bat

我试图使用ProcessBuilder在java中运行msys.bat。 当我使用我的程序运行.bat文件时,发生以下错误:“找不到rxvt.exe或sh.exe二进制文件 – 中止。按任意键继续…”

这是代码,

ProcessBuilder Msys = new ProcessBuilder("C:/msys/1.0/msys.bat", "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\""); Process p = Msys.start(); String line; BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = r.readLine()) != null) { System.out.println(line); } r.close(); 

目标是编译我的一些C项目。 那里的命令只是为了测试结果,而不是我想要完成的。

谢谢您的帮助!

.bat文件无法自行运行,并在Windows命令处理器上调用。 所以不要忘记在你的bat文件之前加载Windows命令处理器,cmd.exe。

 ProcessBuilder Msys = new ProcessBuilder("cmd.exe", "C:/msys/1.0/msys.bat", "/C", "find \"C:/Users/Dan G/Desktop/hello.elf\""); 

编辑
有关此过程发生的提示和陷阱,请查看此有用的文章: 当runtime.exec()不会 。 文章中的代码有点陈旧,但这些概念在今天和当时一样密切相关。 强烈推荐。