出錯 環境
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 的話可能會減少一些這樣的問題。