4

我正在尝试使用 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 项目。上面的命令只是为了测试结果,而不是我想要完成的。

谢谢您的帮助!

4

1 回答 1

4

.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\"");

编辑
请查看这篇有用的文章,了解此过程中出现的提示和陷阱:when runtime.exec() won't。文章中的代码有点过时,但这些概念在今天和当时一样密切相关。强烈推荐。

于 2012-07-11T22:01:21.917 回答