ArrayOutOfBounds使用Java 8构造时创建Bean的异常
2022-09-01 08:06:00
当我使用Java 8功能时,我正在获得服务启动(Bean创建)。ArrayIndexOutOfBoundsException
Java 8已经设置并一直在工作。代码编译正确。在服务启动时,服务无法侦听端口,因为不会创建 Bean。当我更改代码(删除java 8构造)时,服务启动并且一切正常。
这是我正在使用的代码(服务启动的工作代码):
for (Item itemObject : response) {
if (itemObject.hasId()) {
idList.add(String.valueOf(itemObject.Id());
}
}
使用 Java 8 构造的相同代码:
response.parallelStream()
.filter(itemObject -> itemObject.hasId())
.map(itemObject -> itemObject.getId())
.forEach(id -> idList.add(id));
包含这段代码的类的 Bean 是使用组件扫描创建的。
以下是使用第二个代码块代替第一个代码块时的异常消息:
Exiting with throwable: java.lang.IllegalArgumentException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/workspace/.../GetContainerIdForFcSkuAdapter.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 51880
java.lang.IllegalArgumentException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/workspace....Some.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 51880
对我来说没有意义的是,为什么在创建bean时会覆盖函数(不是bean类的构造函数)中的代码。我问这个,因为当我使用正常的for循环而不是并行流时,异常不存在。当调用函数并实际使用此代码时,不应出现。ArrayOutOfBoundsException
我该如何解决这个问题?