NoSuchMethodError:LocalSessionFactoryBuilder.addAnnotatedClass(Ljava / lang / Class;)Lorg / hibernate / cfg / Configuration;

时间:2013-04-09 03:30:50

标签: eclipse hibernate spring-mvc jboss nosuchmethod

我使用的是Spring 3.2和Hibernate4。我包括了所有需要的罐子。使用JBoss AS。从Eclipse部署。但是我收到了这个错误。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'personController': Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 
com.springmvcsample.service.PersonService 
com.springmvcsample.controller.PersonController.personService; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'personService': Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 
com.springmvcsample.dao.PersonDAO com.springmvcsample.service.PersonServiceImpl.personDao; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'personDao': Injection of autowired dependencies failed; nested exception is    
 org.springframework.beans.factory.BeanCreationException: Could not autowire field: 
 org.hibernate.SessionFactory com.springmvcsample.dao.PersonDAOImpl.sessionFactory; nested 
 exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with 
 name 'sessionFactory' defined in ServletContext resource [/WEB-INF/hibernate_config.xml]: 
 Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: 
 org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClass
 (Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;

Web.xml中

   <servlet>
   <servlet-name> SpringMVC_Hibernate</servlet-name>
    <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
   <load-on-startup>1</load-on-startup>
    </servlet>

   <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/SpringMVC_Hibernate-servlet.xml</param-value>
  </context-param>

 <servlet-mapping>
   <servlet-name>SpringMVC_Hibernate</servlet-name>
   <url-pattern>*.htm</url-pattern>
 </servlet-mapping>

SpringMVC_Hibernate-servlet.xml中

        <context:component-scan base-package="com.springmvcsample.controller"/>
    <context:component-scan base-package="com.springmvcsample.dao"/>
    <context:component-scan base-package="com.springmvcsample.service"/>
    <import resource="hibernate_config.xml"/>

    <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>
    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
        <!-- Turn off working out content type based on URL file extension, should fall back to looking at the Accept headers -->
        <property name="favorPathExtension" value="false" />
    </bean>

    <bean name="sender" class="com.springmvcsample.utility.MessageSender"/>

hibernate_config.xml

  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>/resources/db.properties</value>
        </list>
    </property>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.user}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="com.springmvcsample.controller" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>

        </props>
    </property>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

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

my lib flder

其他罐子包括:

  spring-jms-3.2x.jar 
  spring-orm-*.jar
  spring-tx-*.jar
  spring-web-*.jar
  spring-webmvc-*.jar

1 个答案:

答案 0 :(得分:1)

在这种情况下,使用Maven可以让生活更轻松。

在像Eclipse / STS这样的IDE中打开pom.xml将为您提供如下更好的图片: -

enter image description here