关于InstantiationException错误的原因

来源:互联网 发布:淘宝客推广大师官网 编辑:程序博客网 时间:2024/06/05 10:01

关于InstantiationException错误的原因

 (2009-08-11 16:39:21)
转载
标签: 

情感

分类: 系统开发

could not initialization Dammanage:com.ibatis.dao.client.DaoException: Error while configuring DaoManager.  

Cause: com.ibatis.dao.client.DaoException: Error configuring DAO.  

Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: com.ibatis.dao.client.DaoException: Error configuring DAO.  

Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.InstantiationException: com.finance.ProductDaoImpl

 

java.lang.InstantiationException从字面意思上来看是说不能实例化ProductDaoImpl类,出现这种异常的原因通常情况下是由于要实例化的对象是一个接口或者是抽象类等无法被实例化的类。但是在这次的错误中却是个例外,这个错误是由持久类Product引发的,ProductDaoImpl类是我用来查询结果的操作方法集合,它继承了HibernateTemplateDao类,实现了ProductDao接口,这个问题困扰了本人很久,经过网络上的查询得到启发:发现产生这个错误的原因是持久类Product中没有不带参数的构造方法,因为iBATIS在对象建立中,会使用不带参数的构造函数来建立对象,而现在我的Product类中只有一个带参数的构造方法以及一系列的getter/setter方法。只需要在Product类中加入一个不带参数的构造方法,该方法不必执行任何操作,就像默认的构造方法一样。在Hibernate中就有明确的要求:每一个持久化类都必须带一个不带参数的构造方法。

这里说明一点,如果你在类中声明了带参数的构造函数,会自动覆盖无参数的构造函数,这样系统就无法调用无参数的构造函数实例化类,所以会出现这种错误。

 

这个问题在使用类反射实例化某个对象时,如果这个对象不包含无参数的构造函数,也会出现这个错误,解决办法是在这个要通过类反射实例化的这个类中添加一个空的无参数构造函数就可以了.

 

原创粉丝点击