报如如下下错误/异常:
- 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
导致原因:
在使用spring的Aop进行编程时,需要用到asm*.jar,而Hibernate也需要用到asm相关的jar文件,如果在一个工程的构建路径中存在两个asm*.jar,那么这两个jar中的类就会存在冲突,从而导致该问题的产生。
解决:经过网上多翻查找得到多个解决办法,后终于总结出 3 种解决之道:
检查lib下面关于asm的包,分别有如下几个JAR包:
asm-2.2.3.jar
asm.jar
asm-attrs.jar
asm-commons-2.2.3.jar
asm-util-2.2.3.jar
第一种方法↓
-->删除 asm-2.2.3.jar 重启应用服务器 OK! ...
第二种方法↓
-->从网上下一个最新的asm-all-3.0.jar的jar包,然后把原来的关于Hibernate的所有asm开头的jar包全部删掉,还有一个cglib-2.1.3.jar也删掉.
重新部署工程,OK! ...
第三种方法↓
-->去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.jar
再加入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
OK! ...