org.springframework.beans.factory.annotation.InjectionMetadata.needsRefresh

22,263

Solution 1

The needsRefresh() method was added in Spring 4.0.x and so it can't be found in the 3.0.x version.

You need to run:

mvn dependency:tree

and look for a Spring core/beans jar having the 3.x.x version. If you have multiple versions of the same lib, the class-loader can pick the first one it found, and the behavior could become chaotic.

Also, you have both hibernate3.jar and hibernate-core-4.3.5.Final.jar, so make sure you get rid of old versions.

Solution 2

Unconfirmed but I've seen this error also from what appeared to be a Spring 3.2.5 to 3.2.8 issue; i.e. after uplift of all Spring dependencies to 3.2.8 (except Spring Security, remaining on 3.2.5) the problem was resolved.

Solution 3

I was working in eclips spring mvc project.there my application was running well with pivotal tc server but I was getting this error when ever I was trying to run it using tomcat appache.I realized that this is because JRE with the project 1.6 and tomcat was 1.8.I upgrade the JRE to 1.8 and I was able to remove the error.

Share:
22,263
Braham Shakti
Author by

Braham Shakti

Updated on February 11, 2020

Comments

  • Braham Shakti
    Braham Shakti about 4 years

    I am getting a problem while running spring hibernate project for

    java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.needsRefresh(Lorg/springframework/beans/factory/annotation/InjectionMetadata;Ljava/lang/Class;)Z
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:383)
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:332)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:830)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:493)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    

    I have included following jars in my project

    commons-dbcp2-2.0.1.jar
    commons-pool2-2.2.jar
    hibernate3.jar
    hibernate-annotations.jar
    hibernate-commons-annotations-4.0.4.Final.jar
    hibernate-core-4.3.5.Final.jar
    hibernate-entitymanager.jar
    hibernate-validator.jar
    javax.persistence.jar
    jta.jar
    mysql-connector-java-5.1.7-bin.jar
    spring-aop-4.0.5.RELEASE.jar
    spring-aspects-4.0.5.RELEASE.jar
    spring-beans-4.0.5.RELEASE.jar
    spring-build-src-4.0.5.RELEASE.jar
    spring-context-4.0.5.RELEASE.jar
    spring-context-support-4.0.5.RELEASE.jar
    spring-core-4.0.5.RELEASE.jar
    spring-expression-4.0.5.RELEASE.jar
    spring-framework-bom-4.0.5.RELEASE.jar
    spring-instrument-4.0.5.RELEASE.jar
    spring-instrument-tomcat-4.0.5.RELEASE.jar
    spring-jdbc-4.0.5.RELEASE.jar
    spring-jms-4.0.5.RELEASE.jar
    spring-messaging-4.0.5.RELEASE.jar
    spring-orm-4.0.5.RELEASE.jar
    spring-oxm-4.0.5.RELEASE.jar
    spring-test-4.0.5.RELEASE.jar
    spring-tx-4.0.5.RELEASE.jar
    spring-web-4.0.5.RELEASE.jar
    spring-webmvc-4.0.5.RELEASE.jar
    spring-webmvc-portlet-4.0.5.RELEASE.jar
    spring-websocket-4.0.5.RELEASE.jar
    

    My servlet-context.xml looks like

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
                        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
                        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
    
    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />
    
    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />
    
    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>
    
    <beans:bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <beans:property name="basename" value="classpath:messages" />
        <beans:property name="defaultEncoding" value="UTF-8" />
    </beans:bean>
    
    <beans:bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="/WEB-INF/jdbc.properties" />
    
    <beans:bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}">
    </beans:bean>
    
    <beans:bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <beans:property name="dataSource" ref="dataSource" />
        <beans:property name="configLocation">
            <beans:value>classpath:hibernate.cfg.xml</beans:value>
        </beans:property>
        <beans:property name="hibernateProperties">
            <beans:props>
                <beans:prop key="hibernate.dialect">${jdbc.dialect}</beans:prop>
                <beans:prop key="hibernate.show_sql">true</beans:prop>
            </beans:props>
        </beans:property>
    </beans:bean>
    <tx:annotation-driven />
    
    
    <context:component-scan base-package="com.spring.webapp" />
    
    </beans:beans>
    

    Some one on stackoverflow has asked for checking same version of jars file. Please help me to resolve this error as I have already same version of jars included in project

  • rohitmohta
    rohitmohta almost 9 years
    Worked for me. There was a conflict between spring-beans 3.2.10 and 3.2.4.