我正在 AnyLogic 中开发仿真模型,需要从外部 Excel 工作表读取数据。我在Win11操作系统上创建了该项目,并使用Connectivity的Excel文件模块并成功实现了读取功能。
但是当我复制这个项目到带有 Apple M2 芯片的 Macbook Pro 上运行时,项目报错:“读取 excel 文件时出错 java.lang.NoSuchMethodError: 'byte[] org.apache.commons.io.IOUtils.byteArray [int]'”。
我在事件操作代码中使用了anylogic提供的
excelFile.getLastRowNum
、excelFile.getCellNumericValue
和excelFile.getCellStringValue
函数。代码如下:
int time = (int)time() - 15;
String airportName = checkAptName(this);
for (int rowIndex = 2; rowIndex < excelFile.getLastRowNum(airportName); rowIndex++) { // Start with 2, 1 is the head
int tstValue = (int) excelFile.getCellNumericValue(airportName, rowIndex, 1);
if (tstValue == time) {
String destinationValue = excelFile.getCellStringValue(airportName, rowIndex, 2);
destinationApts.add(main.airports.get(getApt(destinationValue)));
departingPed.inject(1);
}
}
我尝试安装最新的JDK,但没有解决问题。可以看到,AnyLogic只需要我完成某些位置的功能代码,所以Excel文件的底层读取我是无法访问的。
这看起来像是一个不兼容的 commons-io 库版本问题导致的?如何更新或降级 AnyLogic 中使用的 commons-io 库?或者这个问题是否需要使用其他解决方案?如果有任何意见,我将不胜感激。
我刚刚给 AnyLogic 发了电子邮件,得到了他们的回复,确认这是 AnyLogic 版本 8.9.1 中我们同时使用 GIS 地图和 Excel 文件模块时的错误。我们可以使用 AnyLogic 版本 8.9.0 来避免这个错误,或者等待他们即将推出的 AnyLogic 版本 8.9.2 来修复这个错误。