使用java8异常整理

这里整理一下在使用java8过程中遇到的异常,方便以后回顾和排查问题

异常1:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [XXX]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 25430

此问题是spring的版本较低不支持java8。
使用Lambda表达式并不会报错,并且可以测试运行通过,但是你仍然不能使用Lambda的forEach进行迭代。他会导致Spring在初始化的时候抛出异常:BeanDefinitionStoreException。

请使用spring4及以上版本。

异常2:

java.io.IOException: invalid constant type: 18

是因为使用了一个与Java 8不兼容的class parser所导致了,现在javassist是属于jboss的一个项目,javassist需要3.18.1及以上版本才支持java8,所以才会报错,将javassist替换到3.18.1及以上版本。

异常3:

java.lang.ArrayIndexOutOfBoundsException: 988

这是使用stream的parallelStream时进行了不安全的操作,这里抛的异常是因为进行的不安全操作为:并行向ArrayList插入数据。因为ArrayList不是线程安全的,导致插入时抛出ArrayIndexOutOfBoundsException是因为他的add()方法。具体原因是涉及到数组长度的变化和内容存放时长度的比较。同时当没有抛出此异常的情况下使用此ArrayList时可能会报空指针异常。原因也是在并发存放数据的时候同一下标内容被分别存放了2次,而第二次的存放应该放到下标+1处的,导致了ArrayList的size和内容不符,取值是存在取到null的可能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值