问题描述:
在启动tomcat时:报错如下
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [ftxInterfaceConfig/spring-context.xml]; nested exception is java.lang.IllegalStateException: Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher
......
Caused by: java.lang.IllegalStateException: Context namespace element
'component-scan'
and its parser
class
[org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK
1.5
and higher
根据报错信息中问题指向ftxInterfaceConfig/spring-context.xml配置文件中的'<component-scan>'元素
分析:
1 正常来说报这个错误的原因(由于我使用的jdk1.8)
JDK使用1.8以上且spring版本过低导致,原因见下:
Spring 大于等于3.2.3(具体版本问题持保留意见,但意思指高版本才支持)的版本才可以支持Java 8
2 因此解决办法有2个:
2.1 升级spring的版本
2.2 使用JDK1.7
3 但是发现我使用的是JDK1.8,但是spring的版本为4.3.7,是支持1.8的
4 后来发现是由于pom.xml文件中加了一个依赖为:
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.4.aicai-SNAPSHOT</version> </dependency>
错误就在这:加入了dubbo的依赖之后,由于dubbo中又依赖了spring,且版本与自己加的spring依赖不一样,导致冲突
5 最终解决:
把dubbo中依赖的spring不级联进来,所以最终为:
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.4.aicai-SNAPSHOT</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency>