L'exécution d'une Commande à partir de Java et d'Attente pour Terminer la Commande

Dans mon programme Java, j'ai créer un processus qui exécute une commande pour exécuter un fichier de commandes comme ceci:

try {
        File tempFile = new File("C:/Users/Public/temp.cmd");
        tempFile.createNewFile();
        tempFile.deleteOnExit();


        setContents(tempFile, recipe.getText()); //Writes some user input to file
        String cmd = "cmd /c start " + tempFile.getPath();


        Process p = Runtime.getRuntime().exec(cmd);


        int exitVal = p.waitFor();

        refreshActionPerformed(evt);

    } catch (InterruptedException ex) {
        Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) {
        Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
    } 

Maintenant, ce que je voudrais voir arriver, c'est que la commande

refreshActionPerformed(evt);

ne s'exécute qu'après le fichier de commandes, j'ai appelé a fini de s'exécuter. Mais pour l'instant, il s'exécute immédiatement après l'Invite de Commande s'ouvre.

Comment puis-je résoudre ce problème?

  • Assurez-vous de lire et de mettre en œuvre tous les conseils de Lors de l'Exécution.exec() ne sont pas. Sinon, vous aurez certainement l'expérience de la "ne sera pas". Pensez également à utiliser un ProcessBuilder pour 1,5+ & passant les arguments sous la forme d'un tableau.
  • J'ai lu Lors de l'Exécution.exec() ne sont pas, mais franchement, je suis complètement nouveau pour la programmation Java et je n'ai aucune idée de comment mettre en œuvre les conseils de cet article.