Spring Hibernate在AOP方面的配置冲突
Spring2.0 Hibernate3.1.x/Hibernate3.2
在使用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存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。
解决办法是:
1).去掉类路径上的关于Hibernate的3个lib
asm.jar
asm-attrs.jar
cglib-2.1.3.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
如果再不行,都试试删删看。
java.lang.SecurityException: class "javax.xml.bind.JAXBContext"'s signer information does not match signer information of other classes in the same package
这个错误是因为载入的包里面有两个相同路径的类,就是在一个包里面有两个同名的类
有可能是将相同的包载入两次或者把包解开后,先将jar文件载入了,后又将解开的类载入了
Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
试试自己去下一个spring的包,把包里的spring.jar加到项目里去。eclipse生成的时候可能会有些包没有放进去。
Error creating bean with name 'datasource' defined in file
Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
试试将commons-dbcp.jar,commons-pool.jar和commons- collections.jar加入CLASSPATH中
hibernate 3.1 中的hibernateTemplate ,class应该为org.springframework.orm.hibernate3.HibernateTemplate,而非org.springframework.orm.hibernate.HibernateTemplate,因为某些原因我现在还用3.1,早前在玩springside的时候感觉hibernate 3.2 的Hibernate Annotations方便多了。
找不到action或报错的另一少有原因,一些版本hibernate版本会有些冲突方面的问题,可换一版本的hibernate试试,个人感觉hibernate的版本对应用会比较敏感
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
java.lang.NoClassDefFoundError: javax/transaction/TransactionManager
原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在
<property name="mappingResources">
<list>
<value>com/yourcompany/model/Login.hbm.xml
</value>
</list>
</property>
2007-06-26 18:38:13,671 ERROR [com.yourcompany.model.dao.LoginDAO] - <save failed>
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name, password) values (?, ?)]; nested exception is java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist
java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist
把hbm文件里面的catalog="'mysql"去掉即可!
另注意的一点是eclipse生成的DAO文件应该是:
public void save(Login transientInstance) {
log.debug("saving Login instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
而不是原来的 public void save(LoginDAO transientInstance)
只要在applicationContext.xml中加上
<property name="mappingResources">
<list>
<value>com/yourcompany/hibernate/Users.hbm.xml</value>
</list>
</property>
加这段代码就会找不到action
换一个版本的hibernate应该就ok
Invalid path /addcustomer was requested
输入的路径不正确,检查spring中注册的action的路径和输入的路径是否一致,留意大小写是否一致
分享到:
相关推荐
小结 (11.13) 通过对本章的学习,读者不仅能够掌握如何使用Spring、Struts与Hibernate进行联合开发的基本方法,还能深入了解这些框架之间如何协同工作以提高开发效率和系统性能。希望这些知识能够为Java学习者在...
- **小结**:完成上述步骤后,CVSNT服务器端的基础配置即告完成。 ##### 3. 客户端(WinCVS)的安装与配置 - **客户端机器和环境配置**:确保客户端机器满足运行WinCVS的要求。 - **安装WinCVS**:运行`CVS-SSH-...
小结 - **总结**:本章主要介绍了如何利用Spring、Struts和Hibernate这三个流行的Java框架来开发Web应用,并详细解释了各个步骤的具体实现方法。 - **重点**:Spring与Struts、Hibernate的整合技术是当前企业级...