-1

我是 Cloudsim 和 CloudReports Extension 的新手,所以我不知道为什么在运行 CloudReports 模拟器时会出现此错误:

org.cloudbus.cloudsim.power.powerdatacenter.processcloudletsubmit 的空指针异常(powerdatacenter.java:269)

我在扩展中添加了一个 cloudlet 调度算法
我可以看到错误发生在 cloudlets 迁移中。我尝试了很多关于如何修复它的搜索,但没有找到对我有帮助的东西。

错误是这样的:

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) at org.cloudbus.cloudsim.core.SimEntity.run(SimEntity.java:406) at org.cloudbus.cloudsim.core.CloudSim.runClockTick(CloudSim.java:471) at 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) at cloudreports.simulation.Simulation.run(Simulation.java:98) at java.lang.Thread.run(Thread.java:748)

请建议;问候。

4

1 回答 1

0

在遵循 CloudSim 项目中提供的模拟示例时,我遇到了同样的问题。调试后发现问题出UserID在创建的cloudlet的设置上。我正在设置一个随机值,因为userId模拟使用brokerId. 因此,使用创建的 brokerId 设置 userId 对我来说是诀窍。

// dataCenterBroker is the instance of the broker which you created
int brokerId = dataCenterBroker.getId(); 

//setting the userId after creating the cloudlet
cloudLet.setUserId(brokerId)
于 2019-01-30T21:15:19.113 回答