spring+hiberante整合单元测试遇到的错误

http://www.zhuoda.org/lunzi/94993.html

 

1、java.lang.NoSuchMethodError: org.springframework.util.ObjectUtils.nullSafeToString(Ljava/lang/Object;)Ljava/lang/String;
spring的jar包冲突错误:
我的是用的spring2.0的jar包,应为要用工作调度所以加了一个1.2版本的spring.jar做支持,项目跑在容器下跑没事,单元测试就会出现以上错误。
参考资料:http://www.javaeye.com/post/365364


2、
support.DisposableBeanAdapter (DisposableBeanAdapter.java:148)     - Couldn't invoke destroy method of bean with name 'sessionFactory'
java.lang.IllegalStateException: Shutdown in progress
查了以下资料,也有人遇到过,找了一类似http://www.blogjava.net/allen-zhe/archive/2007/03/20/104880.html,我的解决方式,就在数据源配置那加了一个destroy-method="close"配置就可以了。
解决方法是看了http://forum.springframework.org/archive/index.php/t-19665.html这片文章想出来的。


3、org.hibernate.HibernateException: CGLIB Enhancement failed:
原因是myeclipse6.0的cglib-2.1.3.jar有bug,改为cglib-2.1.jar就可以了


4、[这个是在服务器运行时才报的,有点跑题了]还有一种比较隐蔽的错误,只要log4j属性文件设置为debug时才会报的错误代码如下:
DEBUG [main] xml.DefaultNamespaceHandlerResolver (DefaultNamespaceHandlerResolver.java:128)     - Ignoring namespace handler [org.springframework.scripting.config.LangNamespaceHandler]: handler class not found
java.lang.ClassNotFoundException: org.springframework.scripting.config.LangNamespaceHandler
找不到类的提示,在google上搜了一段时间没找到这个类在那个包里,最后一想肯定myeclipse自带的包肯定有,果然找到了,是少加载了spring-support.jar包。在myeclipse的Spring2.0 Misc Libraires库里

 

5. support.DisposableBeanAdapter (DisposableBeanAdapter.java:148)     - Couldn't invoke destroy method of bean with name 'sessionFactory'
java.lang.IllegalStateException: Shutdown in progress
错误的真正原因终于找到了,之前的解决方式是不正确的,原来是我配置二级缓存时出现的问题,po中设置了<cache usage="read-write"/>的缘故,去掉就不会有问题了,之前一直忽略这个问题了,再开发阶段最好不要配置单个类的缓存,等上线时再统一配置。

 

 

关于spring中 几个 java.lang.ClassNotFoundException异常解决方案

环境struts1.x, spring2.0, hibernate3.x
1 - org.springframework.ejb.config.JeeNamespaceHandler问题原因:工程中缺少spring的spring-remoting.jar包解决方案:在spring的开发包/dist/modules目录下找到spring-remoting.jar加入到类路径中。重新部署,启动服务,OK。
2 - org.springframework.scripting.config.LangNamespaceHandler问题原因:工程中缺少spring的spring-support.jar包解决方案:在spring的开发包/dist/modules目录下找到spring-support.jar加入到类路径中。重新部署,启动服务,OK。
3 - org.springframework.transaction.config.TxNamespaceHandler问题原因:工程中缺少spring的spring-dao.jar包解决方案:在spring的开发包/dist/modules目录下找到spring-dao.jar加入到类路径中。重新部署,启动服务,OK。
4 - org.springframework.aop.config.AopNamespaceHandler问题原因:工程中缺少spring的spring-aop.jar包解决方案:在spring的开发包/dist/modules目录下找到spring-aop.jar加入到类路径中。重新部署,启动服务,OK。
5 - org.apache.commons.dbcp.BasicDataSource问题原因:工程中缺少commons-dbcp-1.1.jar包解决方案:将commons-dbcp-1.1.jar包加入到类路径中。重新部署,启动服务,OK。
6 - org/apache/commons/pool/impl/GenericObjectPool问题原因:工程中缺少commons-pool-1.3.jar包解决方案:在http://mirrors.ibiblio.org/pub/mirrors/maven2/commons-pool/commons-pool/1.3/commons-pool-1.3.jar下载commons-pool-1.3.jar包加入到类路径中。重新部署,启动服务,OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate 是一种流行的 ORM(对象关系映射)框架,它可以帮助开发者将 Java 对象映射到关系型数据库中。下面是使用 Hibernate 的基本步骤: 1. 引入 Hibernate 的依赖包(jar 文件)和数据库驱动程序。 2. 配置 Hibernate 的配置文件(hibernate.cfg.xml)和映射文件(*.hbm.xml)。 - 配置文件中包括数据库连接信息、Hibernate 的配置参数以及其他信息。 - 映射文件中定义了 Java 对象和数据库表之间的映射关系。 3. 在 Java 代码中创建 SessionFactory 对象,并使用该对象创建 Session 对象。 - SessionFactory 是线程安全的,应该在应用程序启动时创建。 - Session 是轻量级的,应该在每个事务或操作中创建。 4. 使用 Session 对象来执行 CRUD(增删改查)操作。 - 使用 save() 方法来插入新数据,使用 delete() 方法来删除数据,使用 update() 方法来修改数据,使用 get() 或 load() 方法来查询数据。 5. 在程序结束时关闭 Session 对象和 SessionFactory 对象。 下面是一个使用 Hibernate 进行 CRUD 操作的示例代码: ``` // 创建 Configuration 对象,并读取 hibernate.cfg.xml 配置文件 Configuration configuration = new Configuration().configure(); // 创建 SessionFactory 对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); // 创建 Session 对象 Session session = sessionFactory.openSession(); // 插入新数据 Dog dog = new Dog("Tom", 2); session.save(dog); // 查询数据 Dog dog1 = (Dog) session.get(Dog.class, 1); // 修改数据 dog1.setAge(3); session.update(dog1); // 删除数据 session.delete(dog1); // 关闭 Session 对象和 SessionFactory 对象 session.close(); sessionFactory.close(); ``` 这是一个简单的 Hibernate 示例,你可以根据自己的需要添加更多的数据操作和业务逻辑。同时,你也需要熟悉 Hibernate 的各种配置参数和 API,以更好地使用 Hibernate 进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值