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

标签 java command-line makefile

Possible Duplicate:
How to use javas Process.waitFor()?

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

效果很好。 现在我正在尝试创建一个 java 程序来执行该 makefile,但我对这个命令有问题:

Runtime.getRuntime().exec("make");

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

我应该做什么来执行该订单?对于其他订单,它工作正常。使干净,使依赖......

我正在尝试使用我在互联网上找到的代码来完成该任务:

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());         
}

最佳答案

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

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

关于java - 从java执行make命令来编译其他程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797435/

相关文章:

c - Windows 和 *nix 编译检测

java - Hibernate 中的 MappingNotFoundException

java - 屏幕加载 Android 上的随机 TextView

java - liquibase 与 Spring Boot 2 集成时出错

command-line - 在不安装 key 的情况下验证 gpg 签名

makefile - 何时应该在 make recipe 中评估对 *eval* 的调用

Java 与 ArrayList 的多项式乘法

command-line - 用于 XML 架构 (XSD) 比较的 FOSS(命令行)工具?

java - 如何获取多个文件

c++ - makefile 有问题,没有引用资料