webentwicklung-frage-antwort-db.com.de

Java Programmierung: Aufruf einer Exe von Java und Übergabe von Parametern

Ich finde einen Mechanismus zum Aufrufen einer Exe von Java und Übergeben bestimmter Parameter. Wie kann ich vorgehen?

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);
}

Der vorherige Code funktioniert. Ich kann aber keine Parameter übergeben. MyExe.exe akzeptiert Parameter. Ein anderes Problem ist, wenn PathToExe Leerzeichen enthält. ProcessBuilder scheint nicht zu funktionieren. Beispielsweise:

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

Vielen Dank.

81
Lorenzo B

Übergeben Sie Ihre Argumente im Konstruktor.

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

Du bist auf dem richtigen Weg. Die zweiKonstruktoren akzeptieren Argumente, oder Sie können sie nach der Konstruktion mit ProcessBuilder#command(Java.util.List) und ProcessBuilder#command(String...) .

7
T.J. Crowder

Das Folgende funktioniert für mich, wenn Ihre Exe von einer DLL oder einer bestimmten Abhängigkeit abhängt, müssen Sie den Verzeichnispfad festlegen. Wie unten erwähnt, meint exePath den Ordner, in dem exe zusammen mit den Referenzdateien abgelegt wird.

Exe-Anwendung, die eine temporäre Datei erstellt, damit diese in dem in processBuilder.directory angegebenen Ordner erstellt wird (...)

**

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
user3124811
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
Shikha Chauhan