hostList.add(new Host(i, new RamProvisionerSimple(ram), new BwProvisionerSimple(bw), storage, peList, new CloudletSchedulerTimeShared()));的报错The constructor Host(int, RamProvisionerSimple, BwProvisionerSimple, long, list<Pe>, CloudletSchedulerTimeShared) is undefined :,oiJie+ehr:-e--i :x '. 怎么解决
时间: 2024-04-17 08:25:02 浏览: 4
在CloudSim中,Host类的构造函数参数列表与你提供的代码稍有不同。要解决这个问题,你可以尝试使用其他可用的构造函数来创建Host对象。以下是一个修改后的代码示例:
```java
hostList.add(new Host(
i,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerSpaceShared(peList)
));
```
在上述代码中,我们使用了`Host`类的另一个构造函数,该构造函数接受一个额外的参数`VmScheduler`。我们使用`VmSchedulerSpaceShared`作为虚拟机调度器。
请注意,这只是一种解决方案,具体取决于你使用的CloudSim版本和其提供的构造函数。如果仍然遇到问题,请检查你所使用的CloudSim版本的文档或示例代码,以了解正确的构造函数签名。
相关问题
hostList.add(new Host( i, new RamProvisionerSimple(ram), new BwProvisionerSimple(bw), storage, peList, new VmSchedulerSpaceShared(peList) )); } 报错这个VmSchedulerSpaceShared cannot be resolved to a type 怎么修改
如果在你的代码中遇到了"VmSchedulerSpaceShared cannot resolved to a type"错误,这意味着没有找到`VmSchedulerSpaceShared`类。
在较新版本的CloudSim中,`VmSchedulerSpaceShared`已被移除,而使用`VmSchedulerTimeShared`来实现基本的虚拟机调度。你可以尝试使用`VmSchedulerTimeShared`来解决这个问题。
请修改代码如下:
```java
hostList.add(new Host(
i,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList,
new CloudletSchedulerTimeShared(),
new VmSchedulerTimeShared(peList)
));
```
在上述代码中,我们使用了`CloudletSchedulerTimeShared`作为主机的云任务调度器,而使用`VmSchedulerTimeShared`作为虚拟机的调度器。
请注意,这只是一种解决方案,具体取决于你所使用的CloudSim版本和其提供的类。如果仍然遇到问题,请检查你所使用的CloudSim版本的文档或示例代码,以了解正确的虚拟机调度器类名。
Implicit call to 'toString()' on array returned by call to 'httpHosts.toArray(new HttpHost[0])'
这个问题是由Java编译器自动插入的toString()方法导致的。在Java中,当你打印一个对象时,编译器会默认调用该对象的toString()方法来将其转换为字符串。在这个问题中,httpHosts.toArray(new HttpHost[0])返回的是一个HttpHost数组,而当你使用System.out.println()打印该数组时,编译器会自动调用该数组的toString()方法,但是Java中的数组没有重写toString()方法,因此编译器会使用默认的toString()方法来将其转换为字符串,从而导致这个警告信息的出现。
解决这个问题的方法是,将该数组转换为List,然后使用List的toString()方法来打印该数组,或者手动编写一个toString()方法来将该数组转换为字符串。例如,你可以使用以下代码将该数组转换为List并打印出来:
```
List<HttpHost> hostList = Arrays.asList(httpHosts);
System.out.println(hostList.toString());
```
这样就可以避免警告信息的出现了。