学无先后,达者为师

网站首页 编程语言 正文

‘configurationClass‘ must be assignable to [org.hibernate.cfg.Configuration]

作者:Jandey.柳 更新时间: 2022-10-14 编程语言

先贴出报错:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'auth2Filter' defined in ServletContext resource [/WEB-INF/applicationContext-authz.xml]: Cannot resolve reference to bean 'oauthService' while setting bean property 'oauthService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientDetailsDAO' defined in ServletContext resource [/WEB-INF/applicationContext-dao.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext-dao.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: 'configurationClass' must be assignable to [org.hibernate.cfg.Configuration]
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
    ... 121 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientDetailsDAO' defined in ServletContext resource [/WEB-INF/applicationContext-dao.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext-dao.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: 'configurationClass' must be assignable to [org.hibernate.cfg.Configuration]

我的项目是Eclipse使用JBoss容器启动一个EJB的老项目(jboss-5.1.0.GA、EJB3.0),启动后出现上述报错。通过一天不断尝试错误,本地解决这个问题。

解决方法:项目中新增四个jar包:hibernate-annotations.jar、hibernate-commons-annotations.jar、hibernate-entitymanager.jar、hibernate-validator.jar。(直接从 jboss-5.1.0.GA\common\lib目录中获取)

----------------------------------------------------------------------------------------------------------------

如果没有解决你的问题,可以看看下面的分析,或许对你有启发!!!

分析问题:

这个报错是是由hibernate引起,具体原因暂时没有时间去分析,而且设计底层代码,难度也比较大,需要花费大量时间。通过平时做项目的经验,大部分是两个原因:(1)缺少jar包;(2)jar包冲突。经过分析发现,目录 jboss-5.1.0.GA\common\lib 下存在hibernate 的jar包,项目部署的war包中也存在部分hibernate的jar包。

第一步:考虑jar包冲突,删除 jboss-5.1.0.GA\common\lib 中和项目相同的jar包(先备份哈),发现报错更多了,一堆“NoClassDefFoundError”报错,没办法再把删掉的jar包一个一个拷回来。最终又全部拷回来了。(这一步比较花时间,需要耐心!)

第二步:考虑缺少jar包,从 jboss-5.1.0.GA\common\lib 中把项目缺少的相关hibernate的jar包拷贝到项目中。如果有冲突就先删掉,来来回回可能需要尝试几遍。我尝试到这里已经不再报上面的错误。新增的jar包有四个:hibernate-annotations.jar、hibernate-commons-annotations.jar、hibernate-entitymanager.jar、hibernate-validator.jar。

第三步:经过第二步后,还是有报错,又新增了以下jar包:cglib-2.2.jar、asm-3.1.jar。(版本可能需要根据Spring的版本进行调整,我的是Spring3.0.6)

最后算是没有这个报错了。

原文链接:https://blog.csdn.net/csdn122325735/article/details/127287159

栏目分类
最近更新