注:使用的普通web工程,非maven工程
今天同事将spring从3.0版本升级到了3.24版本,而另外引入的Asm是3.14版本的jar,结果报jar包冲突了。
分析:首先3.24版本spring-core核心jar包中已经有了内嵌的Asm的jar包,而这个内嵌的Asm中的ClassVisitor.class是一个抽象类,而Asm3.14版本中的ClassVisitor.class确是一个接口。
当时想到了就将3.14版本的Asm删除了,结果又报了ASM ClassReader failed to parse class file- probably due to a new Java class file version that isn't...的错误。
看到这个错误,第一想到了是不是jdk版本的问题,我自己的jdk版本是1.8的,所以怀疑是spring3.x版本可能不支持jdk1.8。查网上也是说spring3.28的版本以下不支持jdk1.8的jar,所以需要将spring升级到4.x版本。在这里我没有将spring升级,所以将jdk1.8降到jdk1.7。问题得以解决。
总结:
两种方案:
1、将jdk修改为1.7
2、将spring升级为4.x。
注意:在运行的jre版本最后高于等于jdk的版本。