我正在尝试制作一些进程来执行一项任务而我使用Runtime.getRuntime().exec
并且任何进程从一个文件读取一些长数字然后使用xor操作数并写入另一个文件。最后主进程应该读取已生成的文件中的每个长数,并再次读取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;
答案 0 :(得分:2)
您的问题出在您的分配中:
Subprocess[0] = Runtime.getRuntime().exec(command);
您始终会覆盖数组的第一个元素。
将该0更改为i
。