Spring batch 在Spring批处理作业-Tasklet中使用Java ProcessBuilder

Spring batch 在Spring批处理作业-Tasklet中使用Java ProcessBuilder,spring-batch,processbuilder,spring-batch-tasklet,spring-batch-job-monitoring,Spring Batch,Processbuilder,Spring Batch Tasklet,Spring Batch Job Monitoring,我正在尝试使用Java ProcessBuilder执行带参数的终端命令。此代码编写在作为作业一部分执行的JavaSpring批处理Tasklet中 尽管使用下面的代码正确初始化了它,但当process builder尝试读取我的命令参数时,我收到了一个空指针异常。这很奇怪,似乎我遗漏了一些基本的东西 使用Process Builder的代码 if (getActiveProfile().equals("test")) { builder = ne

我正在尝试使用Java ProcessBuilder执行带参数的终端命令。此代码编写在作为作业一部分执行的JavaSpring批处理Tasklet中

尽管使用下面的代码正确初始化了它,但当process builder尝试读取我的命令参数时,我收到了一个空指针异常。这很奇怪,似乎我遗漏了一些基本的东西

使用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类。有人知道出了什么问题吗

请使用Spring Batch提供的
SystemCommandTasklet
或自定义tasklet?@MahmoudBenHassine Simple
tasklet
共享堆栈跟踪,谢谢,因此错误与Spring Batch无关。根据您从ProcessBuilder共享的代码:
if(arg==null)抛出新的NullPointerException(),其中一个参数为空。确保
configPath
tags
name
不为空。