我正在尝试运行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");
}
任何想法我做错了什么?
答案 0 :(得分:1)
exe是否使用stdout,stderr,stdin?你应该总是从他们那里读取或关闭它们。根据实现和缓冲区大小,不读取它们可能会导致阻塞。
答案 1 :(得分:0)
我不确定它是否有用,但为什么你使用空格?
例如:parameters.add("-x ");
你不需要它们。
您还可以尝试将所有参数放在数组中,并使用ProcessBuilder的另一个构造函数,该构造函数将数组作为参数。
答案 2 :(得分:0)
我猜您应首先获得Runtime
的参考。
你可以这样做
Runtime.getRuntime().exec(parameters.toString());
参数列表中的字符串可能需要一点格式化。