Spring java.lang.NoSuchMethodError:org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()

Spring java.lang.NoSuchMethodError:org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider(),spring,hibernate,nosuchmethoderror,Spring,Hibernate,Nosuchmethoderror,我在JSF中使用Spring3.0.5.RELEASE和HibernateHibernateCoreVersion3.6.8.Final 在运行我的服务器Tomcat7时,我有一个例外 Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.

我在JSF中使用Spring3.0.5.RELEASE和HibernateHibernateCoreVersion3.6.8.Final 在运行我的服务器Tomcat7时,我有一个例外

Grave: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [application-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodError: org.hibernate.engine.spi.SessionFactoryImplementor.getConnectionProvider()Lorg/hibernate/service/jdbc/connections/spi/ConnectionProvider;
    at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:90)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.afterPropertiesSet(HibernateTransactionManager.java:252)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1483)
    ... 21 more
这是我的项目Maven中的application-context.xml:

bean id=“dataSource”class=“org.apache.commons.dbcp.BasicDataSource”>

          </list>
      </property>
      <property name="hibernateProperties">
          <props>
              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          </props>
      </property>
  </bean>
  <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"/>
  </bean>
  <tx:annotation-driven transaction-manager="transactionManager" />
  <context:annotation-config/>
  <context:component-scan base-package="fr.ensa.agadir"/>

</beans>

org.hibernate.dialogue.mysqldialogue

您的Spring版本与Hibernate版本不兼容

如果您使用的是Maven run

 mvn dependency:tree
并查找所有出现的hibernate JAR

通常是因为在类路径中同时有Hibernate4和Hibernate3JAR


好机会

如果类路径中有hibernate 4.0 JAR,那么应该使用
org.springframework.orm.hibernate4.LocalSessionFactoryBean
而不是
org.springframework.orm.hibernate3.annotation.annotationationSessionFactoryBean


如果您的类路径没有hibernate 4.0 JAR,请删除所有hibernate JAR并添加hibernate 4.0 JAR,然后使用org.springframework.orm.hibernate4.LocalSessionFactoryBean。

使用hibernate4而不是hibernate3

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"/>
  </bean>


您有一个库问题。检查您的版本。maven在哪里运行。要执行mvn依赖关系:Tree我认为他没有使用maven。如果您使用maven,则该命令必须在pom.xml所在的位置运行。是的,完全正确。在cmd中运行它。我在pom.xml org.hibernate hibernate core 3.6.8.Final jar compile中有这个。相应地更改版本和工件id,或者在WEB-INF/lib中手动添加jar