从java执行make命令编译其他程序

时间:2012-12-10 08:38:08

标签: java command-line makefile

  

可能重复:
  How to use javas Process.waitFor()?

我有一个程序要上传到我的电脑中的Arduino。我创建了一个makefile,用于编译并将其上传到arduino fio。

工作正常。 现在我正在尝试创建一个用于执行该makefile的java程序,但我对此顺序有疑问:

调用Runtime.getRuntime()EXEC( “使”);

当我执行它时,程序被阻止。

执行该订单有什么我应该做的吗?与其他订单,它工作正常。干净,做依赖......

我正在尝试使用此代码在互联网上找到的代码:

public static void prueba() throws InterruptedException, IOException {

    Process proc = Runtime.getRuntime().exec("make");
    int size;
    String s;
    int exCode = proc.waitFor();
    StringBuffer ret = new StringBuffer();



    while((size = proc.getInputStream().available()) != 0) {
        byte[] b = new byte[size];
        proc.getInputStream().read(b);
        s = new String(b);
        ret.append(s);
    }
    System.out.println(ret.toString());         
}

1 个答案:

答案 0 :(得分:1)

在调用process.waitFor()之前,您需要在单独的线程中读取输入流(stdout)和错误流(stderr),以防止阻塞。

这篇文章必读:"When Runtime.exec() won't"并向您展示如何正确使用Runtime.exec