org.springframework.beans.factory.BeanCreationException: Error 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)
網(wǎng)上的說法真是良莠不齊,最終找個能解決問題的方法(折騰我一下午,快瘋了)
原因:
在使用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存在類上的沖突!!!
使用其中之一或兩者都使用,可能會出現(xiàn)如下錯誤:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
解決方法:
1.去掉類路徑上的關(guān)于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
自己的一個小測試: (運行環(huán)境:apache-tomcat-5.5.15 + .MyEclipse_5.5GA_E3.2.2 )
整合ssh項目中, 在 Tomcat 部署的環(huán)境中 D:\tomcat\webapps\my\WEB-INF\lib 發(fā)生了點異常:同時有
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中不會出現(xiàn)異常信息。(我想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與其它包發(fā)生了沖突。
刪除cglib-2.1.3.jar問題解決!