INVOKESPECIAL/STATIC on interfaces require ASM 5 解决方法

时间:2024-04-11 22:41:41

INVOKESPECIAL/STATIC on interfaces require ASM 5

      • 项目启动报错
      • 解决方法

项目启动报错

错误信息如下:

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)
	... 26 common frames omitted

百度都是什么低版本不支持这种,也没说咋解决,以及什么情况下能触发
根据其他人描述,是spring和lambda的冲突,那就在代码中寻找使用lambda的地方,然后挨个排查
最终锁定在这一行代码:

//collect是一个List
Collections.sort(collect,Comparator.comparing(User::getAge));

解决方法

使用别的排序方法对集合进行排序即可,不使用lambda自带的这个排序
估计每个人都不一样,建议是逐条备注起来,然后运行项目,精确到具体哪一行代码