严重: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
-
问题起因:
- 之前整合时ssm时jar包都是从网上打包,自己测试整合后便拿来使用。版本为spring3.1+mybitas3.2+springmvc3.1
spring4以下的版本不支持java8,如这次要使用lambda表达式,整合后写入lambda,jre版本为1.8,程序代码不报错,启动也不报错,运行任何一个action时spring时报如下错误(网上相关文章也找了不少,错误相似,但方法都无用,最后确定我的问题应该是版本冲突):
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\apache-tomcat-8.5.16\webapps\ssm_demo\WEB-INF\classes\com\xf\ssm\demo\action\StudentAction.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 4096
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:262)
org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
于是就把spring及mvc相关的jar包都更换为4.0,其他无任何更改。启动时便报错,错误信息如下:
网上查阅各种文章,处理了一个下午,都没用任何作用。
严重: Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\apache-tomcat-8.5.16\web….
最后用过种种方法后,考虑到应该是jar包冲突,因为我下载的spring4.0中没有一个spring-asm的jar包,把spirng-asm-3.1.jar删除之后,成功解决。
作何也没想到spring3.1无任何问题,换成4.0竟然是因为多了一个spring自己的jar包引起问题。有时候,问题实在解决不了时,尝试下去掉无用jar也许会让人眼前一亮。
以下是网上关于spring-asm的简单了解:
- Spring独立的asm程序,Spring2.5.6的时候需要asmJar包3.0.6开始提供他自己独立的asmJar
- 主要是操作PO字节dng码的,在开发中java很少使用一个框架,当spring ,hibernate整合时,他们两者都有asm.jar包,这时就是删除spring下的asm.jar包。
谢谢参考