could not initialization Dammanage:com.ibatis.dao.client.DaoException: Errorwhile configuring DaoManager.
Cause: com.ibatis.dao.client.DaoException: Error configuringDAO.
Cause: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: java.lang.InstantiationException: com.finance.ProductDaoImpl
Caused by: com.ibatis.dao.client.DaoException: Error configuringDAO.
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中就有明确的要求:每一个持久化类都必须带一个不带参数的构造方法。这里说明一点,如果你在类中声明了带参数的构造函数,会自动覆盖无参数的构造函数,这样系统就无法调用无参数的构造函数实例化类,所以会出现这种错误。这个问题在使用类反射实例化某个对象时,如果这个对象不包含无参数的构造函数,也会出现这个错误,解决办法是在这个要通过类反射实例化的这个类中添加一个空的无参数构造函数就可以了.
今天的文章关于InstantiationException错误的原因分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/8249.html