第二次遇到这个问题,因为两次情况都有点诡异所以记录一下,不一定具备普遍性,仅供参考。
遇到这个问题的前提是shiro需要升级,从1.10.0到1.12.0,pom.xml中代码如下:
<!-- Shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.12.0</version>
</dependency>
升级后系统无法正常编译,一些毫不相干的文件开始报错:类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径。
在这些报错文件中查看具体报错位置,发现他们指向org.springframework相关依赖包6.0.10,尝试将报错头文件的依赖包指向改回5.x版本,并在Maven Repository中删除6.0.10相关包,未果。
想起之前遇到类似报错,是因为有个别springframework相关依赖的版本指定为RELEASE,导致版本过高引起类似错误,全局搜索pom.xml中的RELEASE,将其改为固定版本,此处为避免报错,选择了之前确定正常使用的5.3.23:
再次确认Maven Repository中6.0.10已经全部删除,重新编译,然后诡异场景出现了,万恶之源的6.0.10回来了……
此时处于一筹莫展的状态随手Beyond Compare比较了一下上次可用系统代码和此时的代码区别,发现本地代码的pom.xml文件中出现了并非自己添加的一段:
很明显,每次编译后会冒出来的6.0.10是因为这段并非我自己添加的引用依赖代码(应该是不相干的代码在报错找不到版本的时候自动关联添加的),删除这个,再次删除Maven Repository中所有的6.0.10,果然,编译成功,一切正常。