2012-02-29 10 views
12

जब मैं अपना जूनिट परीक्षण चलाता हूं तो मुझे सही परिणाम मिल सकता है और डेटा डेटाबेस में संग्रहीत किया जा सकता है।java.lang.No.SuchMethodError org.springframework.core.annotation.AnnotationUtils.getAnnotation

जब मैं अपनी परियोजना को टोमकैट में तैनात करता हूं, तो मुझे यह अपवाद मिला।

मेरा वसंत संस्करण 3.1.1 है और टॉमकैट संस्करण 6.0 है।

2012-02-29-16:40:54,968 ERROR - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0': Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.getAnnotation(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) 
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563) 
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1399) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) 
    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1500) 
    at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:670) 
    at org.apache.catalina.manager.ManagerServlet.doPut(ManagerServlet.java:435) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:640) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:619) 

यह काम नहीं करता):

pom.xml:

<properties> 
     <spring.version>3.1.1.RELEASE</spring.version> 
     <hibernate.version>3.6.9.Final</hibernate.version> 
     <jdbc.driver.groupId>mysql</jdbc.driver.groupId> 
     <jdbc.driver.artifactId>mysql-connector-java</jdbc.driver.artifactId> 
     <jdbc.driver.version>5.1.13</jdbc.driver.version> 
    </properties> 

    <dependencies> 

     <!-- Spring 3 dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 


     <!-- spring tx --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.6.12</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.6.12</version> 
     </dependency> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib-nodep</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <!-- asm --> 
     <dependency> 
      <groupId>asm</groupId> 
      <artifactId>asm</artifactId> 
      <version>3.3.1</version> 
     </dependency> 
     <!-- SPRING end --> 

     <!-- jstl --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
     </dependency> 


     <!-- LOGGING begin --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <optional>true</optional> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <optional>true</optional> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <optional>true</optional> 
      <version>1.2.15</version> 
     </dependency> 
     <!-- LOGGING end --> 





     <!-- PERSISTENCE begin --> 
     <!-- hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.15.0-GA</version> 
     </dependency> 
     <!-- PERSISTENCE end --> 

     <!-- dbcp connection pool --> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 


     <!-- spring orm --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 


     <!-- jdbc driver --> 
     <dependency> 
      <groupId>${jdbc.driver.groupId}</groupId> 
      <artifactId>${jdbc.driver.artifactId}</artifactId> 
      <version>${jdbc.driver.version}</version> 
      <scope>runtime</scope> 
     </dependency> 


    </dependencies> 
+0

हमें निर्भरता दें: पेड़ और क्या आपके पास अपने टॉम पर कोई भी lib पंजीकृत है बिल्ली/जेडीके (lib/ext आदि) और अपने सिस्टम क्लासपाथ में जांचें, आपके पास वसंत –

+0

संबंधित प्रश्न/समाधान का कोई गलत संस्करण नहीं है: http://stackoverflow.com/questions/9164001/spring-transaction-manager-annotionat -स्टाइल-रनटाइम-एरर-इन-ग्लासफ़िश 3 –

उत्तर

15

सही हस्ताक्षर

public static <A extends Annotation> A getAnnotation(Method method, 
               Class<A> annotationType) 

लेकिन कुछ

public static <A extends Annotation> A getAnnotation(AnnotatedElement element, 
               Class<A> annotationType) 

दूसरी विधि के साथ पेश किया गया था कॉल करने के लिए कोशिश करता है है spring 3.2.0 (कम से कम मैं नहीं APIs में वसंत 3.0 तक पाया है) वसंत 3.1 (सेबेस्टियन के लिए धन्यवाद) तो संभवतः आपने अपने आवेदन के निर्माण के लिए वसंत 3.1 या उच्चतर का उपयोग किया है और टोमकैट पर 3.1 से पहले एक संस्करण। उस दिशा में जांच करें।

+1

यह वसंत 3.1 पर है और मैं मानता हूं कि कक्षा के बाद से अलग-अलग वसंत संस्करणों का उपयोग किया जाना चाहिए। –

0

आप नहीं सही ढंग से बिलाव के अपने उदाहरण के लिए स्प्रिंग पुस्तकालयों तैनात किया है।

+0

मैं अपने प्रोजेक्ट को तैनात करने के लिए मैवेन का उपयोग करता हूं (पैकेज टोमकैट: पुनर्वितरण)। क्या आप मुझे बता सकते हैं कि कैसे करना है? धन्यवाद – Felix

+2

रन एमवीएन निर्भरताएं: सूची और जांच करें कि क्या आपके पास वसंत के संघर्ष संस्करण हैं, क्योंकि एंड्रियास_D ने सुझाव दिया है कि आप ऊपर हो सकते हैं। क्या आपकी वसंत निर्भरताओं का दायरा सही है, और गलती से 'प्रदान की गई 'पर सेट नहीं है? – mcfinnigan

+0

यह भी संभव है कि आपके पास एक से अधिक वसंत पुस्तकालय उपलब्ध हों और यह गलत हो रहा है .. – Pau

0

बेहतर होगा कि तुम अतीत का कारण बनता है के साथ पूर्ण ढेर, यह मदद मिलेगी चाहते हैं (इस मामले में ज्यादा नहीं लेकिन यह हमेशा बेहतर है)

चूंकि आप एक NoSuchMethodError मिलता है, यह AnnotationUtils वर्ग पाया जाता है लगता है, लेकिन getAnnotation नामक विधि नहीं मिल सकती है। तो रनटाइम पर मुझे लगता है कि कक्षा का गलत संस्करण इस्तेमाल किया जा सकता है।

आपको अपने वेबपैड फ़ोल्डर पर जांच करनी चाहिए जो वसंत के संस्करण को तैनात किया गया है, और जांचें कि उस संस्करण में "getAnotation" विधि है।

आप देख सकते हैं: https://fisheye.springsource.org/browse/spring-framework/org.springframework.core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java

सूचना है कि ऐसा लगता है कक्षाएं मास्टर शाखा पर पुनर्गठित किया गया है (आपको लगता है कि प्रयोग कर रहे हैं ???)

तुम भी एक mvn निर्भरता प्रदर्शन करना चाहिए: पेड़ और यहां वसंत संस्करणों की जांच करें, देखें कि आपके पास यहां कई अलग-अलग वसंत संस्करण नहीं हैं, और यदि यह मामला है, तो निर्भरता बहिष्करण या मेवेन के निर्भरता प्रबंधन टैग का उपयोग करें ताकि आप यह निर्दिष्ट कर सकें कि आप किस संस्करण का उपयोग करना चाहते हैं