2011-09-04 15 views
11

शुरू नहीं कर रहा है मैं वसंत और AspectJ का उपयोग कर लोड समय बुनाई को लागू करने का प्रयास कर रहा हूं। मेरी जानकारी के अनुसार करने के लिए मैं सब कुछ ठीक से विन्यस्त किया है, लेकिन मैं त्रुटि मिलती रहती है जब मैं अपने एकीकरण परीक्षण चलाने के लिए प्रयास करें:स्प्रिंग के लोडटाइमवेवर एजेंट

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.weaving.AspectJWeavingEnabler#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar 
    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:194) 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1079) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:643) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.boku.risk.service.perisistence.PersistenceTestBase.setupBase(PersistenceTestBase.java:23) 
    at com.boku.risk.service.dao.CountryLimitDaoTest.setup(CountryLimitDaoTest.java:33) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar 
    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:194) 
    at org.springframework.context.weaving.LoadTimeWeaverAwareProcessor.postProcessBeforeInitialization(LoadTimeWeaverAwareProcessor.java:95) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 37 more 
Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar 
    at org.springframework.context.weaving.DefaultContextLoadTimeWeaver.setBeanClassLoader(DefaultContextLoadTimeWeaver.java:83) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1436) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1408) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 46 more 

मेरा आवेदन संदर्भ शामिल हैं:

<context:load-time-weaver/> 

और मेरे पोम शामिल हैं:

<dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>${org.springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-agent</artifactId> 
      <version>2.5.6</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.6.10</version> 
     </dependency> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <forkMode>always</forkMode> 
        <argLine> 
         -javaagent:${settings.localRepository}/org/springframework/spring-agent/2.5.6/spring-agent-2.5.6.jar 
        </argLine> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

ऐसा लगता है कि यह समझ नहीं वसंत-एजेंट लोड करने के लिए, लेकिन मैं इस का कारण पता लगाने के लिए नहीं कर पा रहे। आपकी सहायता के लिये पहले से ही धन्यवाद।

+0

मुझे एक ही समस्या थी। यहां देखें: http://stackoverflow.com/a/26991278/449370 – Guito

उत्तर

1

आप कोशिश करते हैं और निम्नलिखित एजेंट करने के लिए स्विच कर सकते हैं:

-javaagent:C:\Users\YourName\.m2\repository\org\aspectj\aspectjweaver\1.6.10.RC1\aspectjweaver-1.6.10.RC1.jar 
3

एसटीएस में अपने वीएम तर्क को यह जोड़ें या -javaagent ग्रहण: C: \\ वसंत-instrument.jar

+1

डबल स्लैश की आवश्यकता नहीं है, कोई विंडोज़ में ग्रहण के लिए करेगा;) –

+0

अच्छा बिंदु जोसेफ। धन्यवाद – vsingh

+2

इसे pom.xml में कहां रखा जाए? – gstackoverflow

0

जोड़ने लॉन्च कॉन्फ़िगरेशन में वीएम Arg के लिए जार फ़ाइल पिछले पोस्टर के रूप में मेरे लिए चाल थी। एसटीएस 3.6.3 में, रन -> रन कॉन्फ़िगरेशन -> MyTcServerEntry -> तर्क टैब फिर जार में जोड़ें। मेरा उदाहरण था: -जवाजेंट: "डी: \ एसटीएस-3.6.3 \ एसटीएस-बंडल \ टीसी सर्वर-2.6.5 \ myApp \ lib \ spring-instrument-3.0.5.RELEASE.jar"

3

घोषित करने का प्रयास करें InstrumentationLoadTimeWeaver बीन स्पष्ट रूप से उपयोग करने के बजाय -javaagent: /path/to/org.springframework.instrument- {version} .jar। प्रलेखन

इसके इस्तेमाल के अनुसार, आप आभासी मशीन शुरू करनी चाहिए स्प्रिंग एजेंट के साथ, निम्नलिखित JVM विकल्पों की आपूर्ति करके:

-javaagent: /path/to/org.springframework.instrument- {संस्करण } .jar

ध्यान दें कि इसके लिए वीएम लॉन्च स्क्रिप्ट में संशोधन की आवश्यकता है जो आपको एप्लिकेशन सर्वर वातावरण (आपकी ऑपरेशन नीतियों के आधार पर) में इसका उपयोग करने से रोक सकता है। इसके अतिरिक्त, जेडीके एजेंट पूरे वीएम का वादा करेगा जो महंगा साबित कर सकता है।

मुझे आशा है कि नीचे दिए गए तरीके से मुझे उम्मीद है कि बेहतर होगा।

@Bean 
public InstrumentationLoadTimeWeaver loadTimeWeaver() throws Throwable { 
InstrumentationLoadTimeWeaver loadTimeWeaver = new InstrumentationLoadTimeWeaver(); 
return loadTimeWeaver; 
} 

यह एक्सएमएल कॉन्फ़िगरेशन में भी किया जा सकता है।

0

आप बिलाव लिनक्स सर्वर के लिए खिड़कियों या catalina.sh के लिए catalina.bash में निम्नलिखित जोड़ने की कोशिश कर उपयोग कर रहे हैं:

सेट CATALINA_OPTS =% CATALINA_OPTS% -javaagent: "C: \ पथ \ के लिए \ वसंत -इनस्ट्रुमेंट-3.1.1.RELEASE.jar "

ध्यान रखें कि यह केवल 7.0.55 से कम टॉमकैट संस्करणों में ही काम करेगा। उसके बाद यह इसे नहीं ले जाएगा। और आपको load-time-weaver (aspectj-weaver) is not working in apache tomcat 7.0.55 का उल्लेख के रूप में संदर्भ.एक्सएमएल में इसे जोड़ना होगा।