6

मैं Maven 3.2.3 का उपयोग कर रहा जावाहो रही है "शाखा लक्ष्य पर एक stackmap फ्रेम उम्मीद" जब Maven एकीकरण परीक्षण

davea$ echo $JAVA_HOME 
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home 

के इस संस्करण के साथ चल रहे जब मैं चलाने

mvn clean install 

मैं मेरे एकीकरण परीक्षणों में नीचे की तरह त्रुटियां ...

testFindSampleUsersByCodeAscByDefault(org.mainco.subco.user.service.SampleUserService2IT) Time elapsed: 2.204 sec <<< ERROR! 
java.lang.VerifyError: Expecting a stackmap frame at branch target 57 
Exception Details: 
    Location: 
    org/mainco/subco/user/service/SampleUserServiceImpl$ValueComparator.compare(Lorg/mainco/subco/user/domain/User;Lorg/mainco/subco/user/domain/User;)I @10: ifnull 
    Reason: 
    Expected stackmap frame at this location. 
    Bytecode: 
    0x0000000: 2ab4 001b 2bb9 002e 0200 c600 2f2a b400 
    0x0000010: 1b2b b900 2e02 00c0 0030 b600 34c6 001c 
    0x0000020: 2ab4 001b 2bb9 002e 0200 c000 30b6 0034 
    0x0000030: b600 39b6 003e a700 0512 404e 2ab4 001b 
    0x0000040: 2cb9 002e 0200 c600 2f2a b400 1b2c b900 
    0x0000050: 2e02 00c0 0030 b600 34c6 001c 2ab4 001b 
    0x0000060: 2cb9 002e 0200 c000 30b6 0034 b600 39b6 
    0x0000070: 003e a700 0512 403a 042d 1904 b600 4436 
    0x0000080: 0515 0599 0016 2d19 04b6 0044 2d19 04b6 
    0x0000090: 0044 b800 4a6c a700 0403 3606 1506 2ab4 
    0x00000a0: 0023 9900 0702 a700 0404 a000 0502 ac04 
    0x00000b0: ac          

    at org.mainco.subco.user.service.SampleUserServiceImpl.findSampleUsers(SampleUserServiceImpl.java:439) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    at com.sun.proxy.$Proxy98.findSampleUsers(Unknown Source) 
    at org.mainco.subco.user.service.SampleUserService2IT.testFindSampleUsersByCodeAscByDefault(SampleUserService2IT.java:215) 

यहां मेरा संकलक प्लगइन कॉन्फ़िगर किया गया है ...

  <profile> 
        <id>jdk-8</id> 
        <activation> 
          <jdk>1.8</jdk> 
        </activation> 
        <build> 
          <plugins> 
            <plugin> 
              <groupId>org.apache.maven.plugins</groupId> 
              <artifactId>maven-compiler-plugin</artifactId> 
              <version>3.1</version> 
              <configuration> 
                <source>1.8</source> 
                <target>1.8</target> 
                <compilerArgument>-proc:none</compilerArgument> 
                <fork>true</fork> 
              </configuration> 
              <executions> 
                <execution> 
                  <id>default-testCompile</id> 
                  <phase>test-compile</phase> 
                  <goals> 
                    <goal>testCompile</goal> 
                  </goals> 
                </execution> 
              </executions> 
            </plugin> 
          </plugins> 
        </build> 
      </profile> 

और यहाँ कैसे मेरे फेल सेफ

    <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-failsafe-plugin</artifactId> 
          <version>2.18.1</version> 
          <configuration> 
            <reuseForks>true</reuseForks> 
            <argLine>-Xmx4096m -XX:MaxPermSize=512M -XX:-UseSplitVerifier ${itCoverageAgent}</argLine> 
            <skipTests>${skipAllTests}</skipTests> 
          </configuration> 
          <executions> 
            <execution> 
              <goals> 
                <goal>integration-test</goal> 
                <goal>verify</goal> 
              </goals> 
            </execution> 
          </executions> 
        </plugin> 

कोई भी विचार कैसे इन विचित्र को रोकने के लिए त्रुटियों मैं देख रहा हूँ "शाखा लक्ष्य पर एक stackmap फ्रेम उम्मीद" कॉन्फ़िगर किया गया है है?

संपादित करें:

(के रूप में टिप्पणी से अनुमान लगाया कि इन समस्याओं थे) मैं इन dependnecies उपयोग कर रहा हूँ:

[INFO] +- org.springframework:spring-aop:jar:3.2.11.RELEASE:compile 
... 
[INFO] +- org.aspectj:aspectjweaver:jar:1.8.6:compile 
[INFO] +- org.aspectj:aspectjrt:jar:1.8.6:compile 
+1

मेवेन के पास आपकी समस्या से कोई लेना देना नहीं है। आपके पर्यावरण में एक बाइटकोड प्रोसेसिंग टूल है जो हाल ही में बाइटकोड सुविधाओं के साथ असंगत है, जबकि "हालिया" का मतलब है "कई साल पुराना", लेकिन जावा 8 से पहले, '-XX: -UseSplitVerifier' विकल्प, आप इसका उपयोग कर रहे हैं, इन्हें अनदेखा करने में मदद कर रहे हैं समस्या का। पहले संदिग्ध एओपी ढांचे और कवरेज एजेंट हैं। पहला प्रयास सबकुछ अपडेट करना चाहिए। – Holger

+0

मैंने $ {itCoverageAGent} विकल्प हटा दिया (कुछ भी नहीं बदला) और स्प्रिंग एओपी 3.2.11.RELEASE और aspectj-weaver 1.8.6 (नवीनतम) का उपयोग कर रहा हूं। यह स्प्रिंग एओपी अपडेट करने का विकल्प नहीं है। क्या आप कह रहे हैं कि स्प्रिंग एओपी का यह संस्करण जावा 8 के साथ असंगत है? – Dave

+0

मुझे इन पुस्तकालयों को विस्तार से नहीं पता है। मैंने जो कहा, वह था कि उनमें से एक कारण होना चाहिए। एक त्वरित खोज से पता चला http://stackoverflow.com/a/27556298/2711488; शायद यह मदद करता है। – Holger

उत्तर

7

मैं इस एक ही समस्या थी जब मैं JDK 8. कोड में ले जाया गया ठीक बनाया गया, यूनिट परीक्षण चलाते समय इन त्रुटियों को मिला। मुझे लगता है कि आप -XX:-UseSplitVerifier का उपयोग कर रहे हैं, जो मेरे लिए भी काम नहीं करता था। मुझे कहीं भी एक छोटा अस्पष्ट मिला था कि जेडीके 8 के साथ -XX:-UseSplitVerifier का उपयोग करने के बजाय, मुझे -noverify का उपयोग करना चाहिए। मैंने इसे आज़माया और यह मेरे लिए काम किया।

उम्मीद है कि इससे मदद मिलती है।

+0

आपने कहां सेट किया -नोवरिफाइड? मैंने इसे MAVEN_OPTS के रूप में सेट किया है लेकिन यह मेरे लिए काम नहीं कर रहा है – dev

संबंधित मुद्दे