Lanzar programa usando cmd desde Java

publicado por: Anonymous

Quiero lanzar un programa desde la ejecución de mi programa en java. El comando que uso en el cmd seria este cambiando user, password y url:

“start /B /D “c:Program Files (x86)Common FilesJuniper NetworksIntegration” pulselauncher -u ‘ user ‘ -p ‘ password ‘ -url https://url.com -r pepe”

Me sale error y ya no sé como intentarlo, podríais echarme un cable? Gracias
Y el código que uso es:

public static void abrirConexionPulseSecure() {
    try {

        String [] cmd = {
                "start", 
                "/B",
                "/D",
                ""c:\Program Files (x86)\Common Files\Juniper Networks\Integration"",
                "pulselauncher", 
                "-u", 
                USER, 
                "-p", 
                PASSWORD, 
                "-url", 
                "https://url.com", 
                "-r", 
                "pepe" };

        Runtime.getRuntime().exec(cmd);
        System.out.println("Conexion establecida.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Y el error que me sale es el siguiente:

    java.io.IOException: Cannot run program "start": CreateProcess error=2, El sistema no puede encontrar el archivo especificado
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at utils.ConexionBBDD.abrirConexionPulseSecure(ConexionBBDD.java:78)
    at test.TestGestionFicheros.main(TestGestionFicheros.java:30)
Caused by: java.io.IOException: CreateProcess error=2, El sistema no puede encontrar el archivo especificado
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    ... 5 more

solución

No uso windows así que no puedo asegurar al 100% que esta solución funcione, pero algo como lo siguiente debería funcionar:

String [] cmd = {
            "cmd.exe", //añadiendo primero el ejecutable que lanza la consola         
            "/c",
            "start", 
            "/B",
            "/D",
            ""c:\Program Files (x86)\Common Files\Juniper Networks\Integration"",
            "pulselauncher", 
            "-u", 
            USER, 
            "-p", 
            PASSWORD, 
            "-url", 
            "https://url.com", 
            "-r", 
            "pepe" };

    Runtime.getRuntime().exec(cmd);

Explicación: El problema es que “start” es una orden interna del intérprete de comandos, como “dir” o “cd”. Es decir, no existe un ejecutable “start.exe” o un “cd.exe” al que llamar, tienes que pedir a cmd.exe que realicen esa acción.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *