Java ProcessBuilder无法执行我的命令

时间:2013-10-14 22:23:35

标签: java

不使用ProcessBuilder,我可以通过提示成功运行此命令。

winexe --user \administrator --password foo //192.168.1.13 "msiexec /qn /i \setup.msi"

我正在通过这个构造函数

创建我的ProcessBuilder
ProcessBuilder(String[] commands)

我传递给ProcessBuilder的String []参数如下

[0] winexe
[1] --user \administrator
[2] --password foo
[3] //192.168.1.13
[4] "msiexec /qn /i \setup.msi"

输出如下所示,所以我知道ProcessBuilder正在执行命令,除了我传入的参数似乎没有问题。谁能发现我做错了什么?

winexe version 0.90
This program may be freely redistributed under the terms of the GNU GPL
Usage: winexe [-?|--help] [--usage] [-d|--debuglevel DEBUGLEVEL]
        [--debug-stderr] [-s|--configfile CONFIGFILE] [--option=name=value]
        [-l|--log-basename LOGFILEBASE] [--leak-report] [--leak-report-full]
        [-R|--name-resolve NAME-RESOLVE-ORDER]
        ...

1 个答案:

答案 0 :(得分:8)

您将ProcessBuilder命令行令牌与您尝试执行的命令的逻辑分组混淆。这个命令不接受参数“--password< space> foo”,但是数组的第3个元素仍尝试通过这样的事情。

你试过吗

[0] winexe
[1] --user
[2] \administrator
[3] --password
[4] foo
[5] //192.168.1.13
[6] msiexec /qn /i \setup.msi