Использование Java ProcessBuilder в пакетном задании Spring - тасклет - PullRequest
0 голосов
/ 27 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...