Cómo ejecutar una aplicación de sistema (ejecutable) desde Java

En muchas aplicaciones hoy en día, es necesario confiar en otras aplicaciones durante el tiempo de ejecución para garantizar la integridad de la aplicación. Por ejemplo, aplicaciones de terceros cuyo objetivo es almacenar una firma de un dispositivo instalado en la computadora. En Java, esto es bastante fácil usando la clase Runtime, esta clase permite que la aplicación se interconecte con el entorno en el que se ejecuta la aplicación. Por ejemplo, en Windows podrá abrir la aplicación Notepad.exe utilizando el alias notepad de la consola de comandos CLI, por lo que con Java deberías poder iniciar la aplicación notepad.exe con las siguientes 3 líneas de código:

Runtime runTime = Runtime.getRuntime();
            
String executablePath = "notepad";

Process process = runTime.exec(executablePath);

Sin embargo, no siempre tendrás accesos directos para los ejecutables, por lo que deberás proporcionar la ruta absoluta al ejecutable. En este breve artículo, te proporcionaremos un breve fragmento de código que te permitirá iniciar fácilmente una aplicación de terceros desde el sistema.

Ejemplo completo

El siguiente fragmento de código empaquetado dentro de una aplicación, iniciará la aplicación (ejecutable) definida en la variable executablePath y detectará cualquier excepción activada por el ejemplo:

package sandbox;

import java.io.IOException;

public class Sandbox {
    
    /**
     * Ejemplo de como ejecutar una aplicación externa desde Java
     * 
     * @param args 
     */
    public static void main(String[] args) {
        try {
            Runtime runTime = Runtime.getRuntime();
            
            String directorioDeEjecutable = "C:\\Users\\sdkca\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe";
            
            Process process = runTime.exec(directorioDeEjecutable);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Si el ejecutable no existe, el código detectará la excepción y mostrará en la consola una salida similar a la siguiente:

java.io.IOException: Cannot run program "my-executable-path.exe": CreateProcess error=2, The system cannot find the file specified
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at java.lang.Runtime.exec(Runtime.java:450)
	at java.lang.Runtime.exec(Runtime.java:347)
	at sandbox.Sandbox.main(Sandbox.java:18)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
	at java.lang.ProcessImpl.start(ProcessImpl.java:137)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable