zzspring和Hibernate整合时候的asm包冲突

MLGBD,明天要交活,今天配了一天环境。真是。。。。。幸亏底下文章救了我,特转之,多谢。 

http://apps.hi.baidu.com/share/detail/33127760

org.springframework.beans.factory.BeanCreationExceptionError creating bean with name 'SessionFactory' defined in ServletContext resource [/WEB-INF/classes/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;)VCaused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)

网上的说法真是良莠不齐,最终找个能解决问题的方法(折腾我一下午,快疯了)

原因:

在使用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.2.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

自己的一个小测试: (运行环境:apache-tomcat-5.5.15 + .MyEclipse_5.5GA_E3.2.2 )

整合ssh项目中, 在 Tomcat 部署的环境中 D:\tomcat\webapps\my\WEB-INF\lib 发生了点异常:同时有 
asm.jar、asm-attrs.jar、asm-2.2.3.jar 、 asm-commons-2.2.3.jar
asm-util-2.2.3.jar、 cglib-nodep-2.1_3.jar
 
在启动tomcat中不会出现异常信息。(我想asm-2.2.3jar可能在一定程度上作了改进。)

当在D:\tomcat\webapps\my\WEB-INF\lib 下加入 cglib-2.1.3.jar 
会报上面的java.lang.NoSuchMethodError: 
org.objectweb.asm.ClassVisitor.visit错误信息。
 说明cglib-2.1.3.jar与其它包发生了冲突
删除cglib-2.1.3.jar问题解决!
 

 

posted on 2011-10-23 00:49  步走高飞  阅读(240)  评论(0编辑  收藏  举报

导航