日期:2014-05-20  浏览次数:20938 次

Spring整合Hibernate时出现的sessionFactory配置异常
我用JUnit做单元测试,手动启动Spring容器时一切正常,但从Tomcat加载Spring的applicationContext.xml文件时却报了如下的错误,请大家帮我看看,谢谢
我的Spring是配置在web.xml中的
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V

------解决方案--------------------
估计是asm-2.2.3.jar冲突,删了它,然后重启tomcat
------解决方案--------------------
要是不行还可以试试在web.xml中加入
<context-param> 
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext-*.xml,/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param> 
/WEB-INF/classes/是你存放applicationContext.xml的路径,我也碰到过类似的问题

或者也可以看看如下:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如果lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
解决办法是:
1.去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
2.加入Spring中的以下4个lib
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
cglib-nodep-2.1_3.jar
------解决方案--------------------
ams.jar版本低或者版本冲突
------解决方案--------------------
在classpath文件中删除 asm-2.2.3 cglib-2.1.3