我正在尝试使用Java ProcessBuilder用参数执行终端命令。这段代码是在Java Spring Batch Tasklet中编写的,该任务是作为作业的一部分执行的。
尽管使用下面的代码正确地初始化了它,但是当流程生成器尝试读取命令参数时,我收到了Null Pointer异常。这很奇怪,似乎我缺少一些基本的东西。
使用Process Builder的代码
if (getActiveProfile().equals("test")) {
builder = new ProcessBuilder("somecommand",
"create", "-nr", "-c", configPath, "--tags", tags, name);
} else {
builder = new ProcessBuilder("somecommand",
"create", "-c", configPath, "--tags", tags, name);
}
Process p = builder.start();
这是显示错误的地方:
public Process start() throws IOException {
// Must convert to array first -- a malicious user-supplied
// list might try to circumvent the security check.
String[] cmdarray = command.toArray(new String[command.size()]);
cmdarray = cmdarray.clone();
for (String arg : cmdarray)
if (arg == null)
throw new NullPointerException();
上面的代码片段来自ProcessBuilder类。有人对出什么问题有任何想法吗?