Программирование на Java: вызов exe из Java и передача параметров - PullRequest
81 голосов
/ 09 апреля 2011

Я выясняю механизм вызова exe из Java и передачи определенных параметров. Как я могу это сделать?

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

Предыдущий код работает. Но я не могу передать параметры в . MyExe.exe принимает параметры. Другая проблема - когда у PathToExe есть пробелы. ProcessBuilder, кажется, не работает. Например:

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

Спасибо.

Ответы [ 4 ]

112 голосов
/ 09 апреля 2011

Передайте свои аргументы в самом конструкторе.

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();
7 голосов
/ 09 апреля 2011

Вы на правильном пути. два конструктора принимают аргументы, или вы можете указать их после построения с помощью ProcessBuilder#command(java.util.List) и ProcessBuilder#command(String...).

0 голосов
/ 07 октября 2016

Ниже работает для меня, если ваш exe зависит от некоторой DLL или определенной зависимости, то вам нужно установить путь к каталогу. Как упомянуто ниже, exePath означает папку, в которую exe-файл помещается вместе со ссылочными файлами.

Exe-приложение, создающее любой временный файл, поэтому оно будет создано в папке, упомянутой в 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 голосов
/ 15 сентября 2016
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"); 
    }
}
...