Pemrograman Java: memanggil exe dari Java dan meneruskan parameter


87

Saya sedang mencari tahu mekanisme untuk memanggil exe dari Java dan meneruskan parameter tertentu. Bagaimana saya bisa melakukannya?

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

Kode sebelumnya berfungsi. Tapi saya tidak bisa memasukkan parameter . MyExe.exe menerima parameter. Masalah lainnya adalah ketika PathToExe memiliki spasi kosong. ProcessBuilder sepertinya tidak berfungsi. Sebagai contoh:

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

Terima kasih.


1
ProcessBuilder baru ("C: \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Pangeran John Wesley


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();Apakah cuplikan ini berharga untuk argumen opsi? Misalnya -h yang berarti bantuan dan sebagainya ..
Lorenzo B

bagaimana dengan jalur dengan spasi kosong? Terima kasih lagi. Sangat membantu!!
Lorenzo B

3
@ Fleks: Argumen adalah argumen. The makna dari argumen adalah sepenuhnya terserah program makhluk dijalankan. Satu program dapat ditafsirkan -hsebagai opsi, program lain dapat menafsirkannya sebagai nama file. ProcessBuildertidak tahu atau peduli. Re path dengan spasi: Itulah salah satu alasan mengapa argumen diberikan sebagai string terpisah daripada sebagai (katakanlah) daftar yang dipisahkan spasi seperti pada baris perintah dan di beberapa API yang buruk. Lempar spasi di sana dengan mengabaikan, seluruh jalur program akan diberikan ke OS untuk diperlakukan sebagaimana mestinya.
TJ Crowder

Jawaban:




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

1
Di mana meletakkan args?
Mert Serimer

1
@Shikha silahkan melalui pertanyaan
Anand j. Kadhi

0

Di bawah ini berfungsi untuk saya jika exe Anda bergantung pada beberapa dll atau ketergantungan tertentu maka Anda perlu mengatur jalur direktori. Seperti disebutkan di bawah exePath berarti folder tempat exe ditempatkan bersama dengan file referensinya.

Aplikasi exe membuat file temporaray apa pun sehingga akan dibuat di folder yang disebutkan di 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();
} 

**

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.