Я пытаюсь выполнить команды терминала с аргументами, используя 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. Кто-нибудь имеет представление о том, что идет не так?