我是Cloudsim和CloudReports Extension的新手,所以我不知道为什么 运行CloudReports模拟器时,会出现此错误:
org.cloudbus.cloudsim.power.powerdatacenter.processcloudletsubmit(powerdatacenter.java:269)nullpointerexception
我在扩展中添加了一个cloudlet调度算法 我只能看到cloudlets Migration发生错误。 我尝试了很多关于如何修复它但没找到能帮助我的东西。
错误是这样的:
显示java.lang.NullPointerException 在org.cloudbus.cloudsim.Datacenter.processCloudletSubmit(Datacenter.java:761) 在org.cloudbus.cloudsim.power.PowerDatacenter.processCloudletSubmit(PowerDatacenter.java:269) 在org.cloudbus.cloudsim.Datacenter.processEvent(Datacenter.java:159) 在org.cloudbus.cloudsim.core.SimEntity.run(SimEntity.java:406) 在org.cloudbus.cloudsim.core.CloudSim.runClockTick(CloudSim.java:471) 在org.cloudbus.cloudsim.core.CloudSim.run(CloudSim.java:835) 在org.cloudbus.cloudsim.core.CloudSim.startSimulation(CloudSim.java:151) 在cloudreports.simulation.Simulation.runSimulation(Simulation.java:157) 在cloudreports.simulation.Simulation.runAllSimulations(Simulation.java:129) 在cloudreports.simulation.Simulation.run(Simulation.java:98) 在java.lang.Thread.run(Thread.java:748)
plz Advise; 问候。
答案 0 :(得分:0)
当我遵循CloudSim项目中提供的模拟示例时遇到了相同的问题。调试后发现问题出在设置创建的cloudlet的UserID
上。我在模拟中使用userId
检索cloudlet时将随机值设置为brokerId
。因此,将userId与创建的brokerId一起设置对我来说很成功。
// dataCenterBroker is the instance of the broker which you created
int brokerId = dataCenterBroker.getId();
//setting the userId after creating the cloudlet
cloudLet.setUserId(brokerId)