2012-12-10 4 views
0

Possible en double:
How to use javas Process.waitFor()?Exécuter commande make de java pour compiler un autre programme

J'ai un programme à télécharger sur Arduino dans mon pc. J'ai créé un fichier makefile pour le compiler et le télécharger sur arduino fio.

Cela fonctionne très bien. Maintenant, j'essaye de créer un programme java pour exécuter ce makefile mais j'ai des problèmes avec cet ordre:

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

Lorsque je l'exécute, le programme est bloqué.

Y a-t-il quelque chose que je devrais faire pour exécuter cet ordre? Avec d'autres commandes, cela fonctionne bien. purifiez, faire dépendre ....

Je suis en train avec ce code j'ai trouvé sur internet pour cette tâche:

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

Peut-être utile aussi: http://stackoverflow.com/questions/7101468/execute-makefile-using-java-command – acostache

Répondre

1

Vous devez lire à la fois le flux d'entrée (stdout) et le flux d'erreur (stderr) dans des threads séparés avant d'appeler process.waitFor(), afin d'empêcher le blocage.

Cet article est un must-read: "When Runtime.exec() won't" et vous montre comment utiliser Runtime.exec correctement.

+0

Je vais le lire tout de suite. Merci beaucoup. – user1298272

Questions connexes