Java编程:从Java调用exe并传递参数

时间:2011-04-09 11:19:53

标签: java exe processbuilder

我正在找出一种从Java调用exe并传入特定参数的机制。我该怎么办?

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 个答案:

答案 0 :(得分:111)

在构造函数本身传递你的参数。

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

答案 1 :(得分:7)

你走在正确的轨道上。 two constructors接受参数,或者您可以使用ProcessBuilder#command(java.util.List)ProcessBuilder#command(String...)在构建后指定它们。

答案 2 :(得分: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"); 
    }
}

答案 3 :(得分:0)

如果您的exe依赖于某些dll或某些依赖项,则下面适用于我,那么您需要设置目录路径。 如下所述,exePath是指exe与其引用文件一起放置的文件夹。

exe应用程序创建任何temporaray文件,因此它将在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();
} 

**