美文网首页
INVOKESPECIAL/STATIC on interfac

INVOKESPECIAL/STATIC on interfac

作者: Timor小先生 | 来源:发表于2023-08-14 20:49 被阅读0次

今天用Java Stream写了这样一段代码,本意是合并两个list,并去重,但是出现无法启动问题

1、代码

supplierNames = Stream.concat(supplierNames.stream(), supplierNameTemp.stream())

                        .distinct().collect(Collectors.toList());

2、启动出现如下问题

Caused by: java.lang.IllegalArgumentException: INVOKESPECIAL/STATIC on interfaces require ASM 5

at org.springframework.asm.MethodVisitor.visitMethodInsn(Unknown Source)

at org.springframework.asm.ClassReader.a(Unknown Source)

at org.springframework.asm.ClassReader.b(Unknown Source)

at org.springframework.asm.ClassReader.accept(Unknown Source)

at org.springframework.asm.ClassReader.accept(Unknown Source)

at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64)

at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)

at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)

at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:266)

... 37 more

3、排查原因

低版本(例如3.2.9)的spring不支持调用接口中的static方法,例如

Comparator.comparingInt

Function.identity

查看我的spring的pom版本以及Stream.concat具体定义信息,正是接口中static方法

spring版本查看 Stream.concat定义

4、问题解决

修改成笨笨的方式,启动无问题

supplierNames.addAll(supplierNameTemp);

supplierNames = supplierNames.stream().distinct().collect(Collectors.toList());

相关文章

网友评论

      本文标题:INVOKESPECIAL/STATIC on interfac

      本文链接:https://www.haomeiwen.com/subject/itmcmdtx.html