#Exception in thread “main“ java.lang.NoSuchMethodError: [email protected]

问题描述:

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V

在创建ClassPathXmlApplicationContext时报错。

 

解决方法:

可能是jar包冲突,即项目中存在两个或两个以上不同版本的同名jar包。比如:a.1.jar,a.2.jar。

一、这个冲突可能是显式的,比如有两个<dependency>标签,它们只有<version>不同。

二、也可能是隐式的,即是由传递依赖导致的。比如有个x的<dependency>,依赖a.1.jar;有个y的<dependency>,依赖a.2.jar。

我自己项目的问题属于第二种情况,查看Maven:

#Exception in thread “main“ java.lang.NoSuchMethodError: [email protected]

可以发现,倒数第二、三行是灰的,并且行末的括号中指明了有冲突。

怎么办?

看下图:

#Exception in thread “main“ java.lang.NoSuchMethodError: [email protected]

由图可知,把spring-jdbc和spring-context改成相同版本即可

改之前:

#Exception in thread “main“ java.lang.NoSuchMethodError: [email protected]

改之后:

#Exception in thread “main“ java.lang.NoSuchMethodError: [email protected]

 

Over!