En mi programa Java, se crea un proceso que se ejecuta un comando para ejecutar un archivo por lotes como esto:Ejecución de un comando de Java y Esperando el comando termine
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);
}
Ahora, lo que me gustaría que suceda es que el comando
refreshActionPerformed(evt);
sólo se ejecuta después de que el archivo por lotes que se llama ha terminado de ejecutarse. Pero ahora mismo, se ejecuta inmediatamente después de que se abre el Símbolo del sistema.
¿cómo puedo solucionar esto?
Asegúrese de leer y poner en práctica * todos * los consejos de [Cuando Runtime.exec() no] (http://www.javaworld.com/javaworld/jw-12-2000/jw- 1229-traps.html). De lo contrario, casi seguramente experimentarás el "no quiero". También considere usar un 'ProcessBuilder' para 1.5+ y pasar los argumentos como una matriz. –
Leo cuando Runtime.exec() no lo hará, pero francamente, soy completamente nuevo en la programación de Java y no tengo idea de cómo implementar los consejos de ese artículo. –