使用 Java 8 构造时创建 Bean 时出现 ArrayOutOfBoundsException

2024-01-15

我正在得到一个ArrayIndexOutOfBoundsException当我使用 Java 8 功能时,服务启动(Bean 创建)。

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当调用函数并且实际使用此代码时出现。

我该如何解决?


你使用哪个版本的Spring?您需要升级到 Spring 4 才能使用 Java 8 lambda 表达式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 8 构造时创建 Bean 时出现 ArrayOutOfBoundsException 的相关文章

随机推荐