无法在Java中使用ProcessBuilder运行exe文件

时间:2012-01-26 11:51:47

标签: java processbuilder

我正在尝试运行exe文件,同时为它设置一些参数:

myExePath -ini myIniPath -x myConfigFilePath

当我从命令行运行它时,它完美地运行。但是当我尝试从我的Java代码运行它时,该过程开始但是一段时间后没有响应,所以我必须强行关闭它。我正在使用这个Java代码:

    List<String> parameters = new ArrayList<String>();
    parameters.add(myexePath);
    parameters.add("-ini ");
    parameters.add(myIniPath);
    parameters.add("-x ");
    parameters.add(myConfigPath
    ProcessBuilder builder = new ProcessBuilder(parameters);
    Process process = builder.start();

    try {
        process.waitFor();
    } catch (InterruptedException e) {
        System.err.println("Process was interrupted");
    }

任何想法我做错了什么?

3 个答案:

答案 0 :(得分:1)

exe是否使用stdout,stderr,stdin?你应该总是从他们那里读取或关闭它们。根据实现和缓冲区大小,不读取它们可能会导致阻塞。

答案 1 :(得分:0)

我不确定它是否有用,但为什么你使用空格? 例如:parameters.add("-x "); 你不需要它们。

您还可以尝试将所有参数放在数组中,并使用ProcessBuilder的另一个构造函数,该构造函数将数组作为参数。

答案 2 :(得分:0)

我猜您应首先获得Runtime的参考。

你可以这样做 Runtime.getRuntime().exec(parameters.toString());

参数列表中的字符串可能需要一点格式化。