1

在收到有关 SSCCE 的建议后,我更新了我的问题。这里又是:

我正在尝试使用 JDK7u21 使用 ProcessBuilder 执行以下代码:

List<String> cmd = new ArrayList<String>(Arrays.asList(cmdLine));
if (addMetaInfo)
    System.out.println("Executing command '" + cmd + "' on OS '" + System.getProperty("os.name") + "'");
try {
    ProcessBuilder pb = new ProcessBuilder(cmd);
    pb.directory(workingDir);
    proc = pb.start();
} catch (IOException e) {
    System.out.println(e.getMessage());
    throw e;
}

执行上述代码后,我得到这个:

Executing command '[C:\MyCLI.cmd, -c, C:\myFile.etl, -d, DateConverter, -l"ERROR", -p"[INPUT1]=2010:06:18", -p"[INPUT2]=2010:06:19"]' on OS 'Windows 7'
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Argument has embedded quote, use the explicit CMD.EXE call.

在提供输入时,我还尝试在 -l 和 -p 参数之后转义双引号,但它也不起作用。

Saw ProcessBuilder 已经在命令行中添加了额外的引号,但没有任何线索。

有人可以帮忙吗?

4

0 回答 0