天天看点

[问题与解决] java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

出错 环境

 MyEclipse10 : Struts2 +Hibernate3.3+Spring 2.5 

出错现象

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testa' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	java.security.AccessController.doPrivileged(Native Method)      

问题原因

Hibernate3.3 Core Libraries 中的 cglib-2.2.jar 和 Spring 2.5 AOP Librariest 中的  cglib-nodep-2.1_3.jar 版本不一致 发生冲突。

解决方法

删除Hibernate3.3 Core Libraries 中的 cglib-2.2.jar  

操作步骤 为 windows->Preferences->MyEclipse->Project Capabilities ->Hibernate ->Hibernate 3.3 

     Library modules 选择 Hibernate3.3 Core Library 

     把cglib-2.2.jar  remove

     Project-->Clean 重新部署

问题思考

Hibernate3.3 是否与 Spring2.5 在某种程度上不兼容? 而Hibernate3.2 中的cglib 的版本为2.1_3。Hibernate3.2 +Spring 2.5 的话可能会减少一些这样的问题。

继续阅读