Метод не найден Ошибка - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь сделать базовое приложение Spring MVC 3.0. Но когда я запускаю свой сервер, я получаю следующую ошибку

java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata.<init>(Ljava/lang/Class;)V
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:350)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:296)
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:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
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:1266)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)

Может кто-нибудь сказать мне, почему?

Ответы [ 5 ]

6 голосов
/ 14 марта 2012

У вас есть две библиотеки, которые несовместимы из-за разных версий.

С одной стороны у вас есть spring-beans.jar в версии 3.0.5 (или какой-либо другой версии 3.0.x). - Эта банка содержит org.springframework.beans.factory.annotation.InjectionMetadata с конструктором с двумя параметрами public InjectionMetadata(Class targetClass, Collection<InjectedElement> elements). И это единственный конструктор этого класса.

С другой стороны, у вас есть spring-orm.jar, я не знаю его версию, но я думаю, что-то вроде 2.0.x или 3.1.x. Он содержит класс org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor, который пытается создать экземпляр InjectionMetadata с конструктором с одним параметром.

И этот результат в этом

java.lang.NoSuchMethodError: org.springframework.beans.factory.annotation.InjectionMetadata. (Ljava / lang / Class;) V

Решение простое: убедитесь, что spring-beans.jar и spring-orm.jar (как и все другие пружинные банки) имеют одинаковую версию.

1 голос
/ 13 марта 2012

Выполните поиск, включая архивы (файлы .jar) (например, легко с Total Commander) в вашем пути к классам для файлов, содержащих InjectionMetadata.class.Подобные ошибки обычно случаются, когда во время выполнения загружается другая версия класса, которая используется / просматривается вашей любимой IDE при редактировании кода.

0 голосов
/ 20 августа 2016

Решение простое: убедитесь, что spring-beans.jar и spring-orm.jar (как и все остальные пружинные банки) имеют одинаковую версию.

0 голосов
/ 05 октября 2014

Вы можете сделать все банки согласованными, используя зависимости спецификации.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-framework-bom</artifactId>
    <version>4.0.5.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
0 голосов
/ 13 марта 2012

Просмотр версии библиотеки.Например, вы можете использовать старую версию Spring-Beans и более новую версию Spring-Core.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...