spirng3.1换成4.0后报错Exception sending context initialized event to listener instance of class

来源:互联网 发布:塔士多礼服 知乎 编辑:程序博客网 时间:2024/06/13 21:55

严重: 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包。

谢谢参考

阅读全文
0 0