Программирование на Java: вызов exe из Java и передача параметров
я выясняю механизм вызова exe из Java и передачи определенных параметров. Как я могу это сделать?
Process process = new ProcessBuilder("C:PathToExeMyExe.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);
}
предыдущий код работает. но я не могу передать параметры в. Моя жена.ехе принимает параметры. Другая проблема заключается в том, когда PathToExe имеет пробелы. ProcessBuilder, кажется, не работает. Например:
C:UserMy applicationsMyExe.exe
спасибо.
4 ответа:
передайте свои аргументы в самом конструкторе.
Process process = new ProcessBuilder("C:\PathToExe\MyExe.exe","param1","param2").start();
вы на правильном пути. Элемент дваконструкторы принять аргументы, или вы можете указать их после построения с
ProcessBuilder#command(java.util.List)
иProcessBuilder#command(String...)
.
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"); } }
ниже работает для меня, если ваш exe зависит от некоторой dll или определенной зависимости, то вам нужно установить путь к каталогу. Как упоминалось ниже exePath означает папку, где exe помещается вместе с его ссылочными файлами.
Exe приложение, создающее любой временный файл, так что он будет создавать в папке упоминание в processBuilder.справочник.(..)
**
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(); }
**