一)错误提示: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
二)错误提示:CGLIB Enhancement failed
解决:
Spring的AOP编程时,会用到这几个lib:
asm-2.2.3.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
cglib-nodep-2.1_3.jar
Hibernate也包含类似的包lib:
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
而导致的包冲突。
只要将hibernate用到的三个包都删掉就应该没有问题了,可是正常情况下这样是解决不了问题的,因为tomcat下已经放在webapps文件夹下的包却还没有删除,所以我们要手工删除它,找到C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/目录下,你的项目,WEB-INF文件夹,lib文件夹,将三个包删除就ok了
2
SSH整合,最麻烦的就是三种框架都要导入一堆的jar包,稍有版本上的冲突,就让你中招。中招还不说,难就难在搞不清错在什么地方。
类没有错、xml文件的配置也没有错,该有的步骤都有了,可就是问题依旧........
根据各类报错信息在网上苦苦搜寻,同样的错误碰到的人还真多,但就是很少有贴出具体解决办法的,即便是有,拿来却不宜用,哎,苦~~~~(> _< )~~~~ 啊
不过呢,苍天不负有心人,苦苦寻来,歪打正着,solution终于找到~~
为了大家不在为同样的问题困扰,今天特将此现象公布出来,并给出解决方案。
原因:其实是包冲突的问题。
Spring2.0 AOP Liberaries里的asm2.2.3.jar和Hiberate中的生成代理用的asm.jar冲突
把asm2.2.3.jar , asm-util-2.2.3.jar, asm-commons-2.2.3.jar 这三个包删除就可以了。。。