Runtime.getRuntime().exec 中的 NullPointerException 错误

NullPointerException error in Runtime.getRuntime().exec

我试图让一些进程来完成一项任务,我使用 Runtime.getRuntime().exec 并且任何进程从一个文件中读取一些长数字然后使用 xor 操作数并写入另一个文件。最后,主进程应该读取文件中的每个长数字并再次异或。 这是我的代码,但是当我 运行 它时,我在包含 Subprocess[i].waitFor() == 0 的行中得到 NullPointerException。为什么?谢谢你的帮助。我知道什么是 NullPointerException 我不想问!

    Process[] Subprocess;
    Subprocess = new Process[processCount];
    for (int i = 0; i < processCount; i++) {
        try {
            String[] command = {"java", "-cp", pathSubProcess, "SubProcess", p, String.valueOf(i), String.valueOf(processCount), String.valueOf(size)};
            Subprocess[0] = Runtime.getRuntime().exec(command);

        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
    /////////////////////////////////////////////////////////////////////////
    long xor = 1;
    for (int i = 0; i < processCount; i++) {
        if(Subprocess[i].waitFor() == 0){
            xor = xor ^  pp.readFiles(i);
        }
    }

   xor = xor ^ 1;

您的问题出在您的作业中:

Subprocess[0] = Runtime.getRuntime().exec(command);

你总是覆盖数组的第一个元素。

将 0 更改为 i