0

我正在尝试运行一个 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");
    }

任何想法我做错了什么?

4

3 回答 3

1

exe 是否使用标准输出、标准错误、标准输入?您应该始终阅读或关闭它们。根据实现和缓冲区大小,不从它们读取可能会导致阻塞。

于 2012-01-26T12:19:40.383 回答
0

我想您应该首先获得对Runtime.

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

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

于 2012-01-26T12:34:23.050 回答
0

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

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

于 2012-01-26T12:05:02.243 回答