Pregunta Programación Java: llamar a un exe de Java y pasar parámetros


Estoy averiguando un mecanismo para llamar a un ejecutable de Java y pasar parámetros específicos. ¿Como lo puedo hacer?

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
  System.out.println(line);
}

El código anterior funciona. Pero no puedo pasar los parámetros en. MyExe.exe acepta parámetros. Otro problema es cuando PathToExe tiene espacios en blanco. ProcessBuilder parece no funcionar. Por ejemplo:

C:\\User\\My applications\\MyExe.exe

Gracias.


75
2018-04-09 11:19


origen


Respuestas:


Pase sus argumentos en el constructor mismo.

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();

104
2018-04-09 11:31



Estás en el camino correcto. los dos  constructores aceptar argumentos, o puede especificarlos después de la construcción con ProcessBuilder#command(java.util.List) y ProcessBuilder#command(String...).


7
2018-04-09 11:25



import java.io.IOException;
import java.lang.ProcessBuilder;

public class handlingexe {
    public static void main(String[] args) throws IOException {
        ProcessBuilder p = new ProcessBuilder();
        System.out.println("Started EXE");
        p.command("C:\\Users\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");   

        p.start();
        System.out.println("Started EXE"); 
    }
}

0
2017-09-15 04:23



Debajo funciona para mí si su exe depende de alguna dll o cierta dependencia, entonces necesita establecer la ruta del directorio. Como se menciona a continuación, la carpeta exePath mean donde exe se coloca junto con sus archivos de referencias.

Aplicación Exe que crea cualquier archivo de temporaray para que se cree en la mención de carpeta en processBuilder.directory (...)

**

ProcessBuilder processBuilder = new ProcessBuilder(arguments);
processBuilder.redirectOutput(Redirect.PIPE);
processBuilder.directory(new File(exePath));
process = processBuilder.start();
int waitFlag = process.waitFor();// Wait to finish application execution.
if (waitFlag == 0) {
...
 int returnVal = process.exitValue();
} 

**


0
2017-10-07 07:46