2011-12-26 4 views
12

हाय मैं हाइबरनेट 4.0.0 अंतिम रिलीज़ और वसंत 3.1 के साथ Maven 3.0.3 का उपयोग कर एक Maven परीक्षण चला रहा हूँ उम्मीद jdk7 अद्यतन पर 2.मैं कैसे इकाई परीक्षण जावा 7 में चलाने के लिए मिलता है: java.lang.VerifyError: शाखा लक्ष्य पर एक stackmap फ्रेम

मुझे निम्न त्रुटि मिलती है।

Caused by: java.lang.VerifyError: Expecting a stackmap frame at branch target 63 in method ${myDomainClass}.equals(Ljava/lang/Object;)Z at offset 24 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442) 
    at java.lang.Class.getDeclaredMethods(Class.java:1808) 
    at org.hibernate.property.BasicPropertyAccessor.getterMethod(BasicPropertyAccessor.java:352) 
    at org.hibernate.property.BasicPropertyAccessor.getGetterOrNull(BasicPropertyAccessor.java:331) 
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:314) 
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:310) 
    at org.hibernate.internal.util.ReflectHelper.getter(ReflectHelper.java:250) 
    at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:229) 
    at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:314) 
    at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:447) 
    at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:380) 
    at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:320) 
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:171) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3377) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3369) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3357) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:184) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:314) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 

मेरी समान विधि कॉमन्स-लैंग 2.6 से इक्वाल्सबिल्डर का उपयोग कर रही है। मैं सेट निम्नलिखित Maven विकल्प चुनता

SET MAVEN_OPTS=%MAVEN_OPTS% -XX:-UseSplitVerifier 

पढ़ने इस Java 7 JVM verifyError

नोट के बाद: JDK 1.6 अद्यतन 29.

मैं इसे कैसे ठीक करूं के तहत मेरा परीक्षण काम करता है? ऐसा लगता है कि सेटिंग -XX: -UseSplitVerifier अभी भी त्रुटि का कारण बनता है।

+0

मैं फिर से सभी परियोजनाओं को साफ और निर्माण करूँगा और अन्य कॉमन्स-लैंग लिब का प्रयास करूंगा। इस मुद्दे की तरह थोड़ा सा लगता है: http://stackoverflow.com/a/8617057/1064325 – falsarella

+0

हाइबरनेट सीजीएलआईबी का उपयोग करता है और इस पर निर्भर करता है कि आपने वसंत कैसे स्थापित किया है, यह भी इसी तरह के पुस्तकालयों का उपयोग कर सकता है, शायद वे दोष दे सकते हैं। क्लासपाथ में cglib के एक नवीनतम संस्करण का उपयोग करने का प्रयास करें और देखें कि क्या यह संतुष्ट है। –

उत्तर

14

surefire plugin documentation MAVEN_OPTS के अनुसार, एक पैदा की JVM द्वारा नहीं ली गई है ताकि आप -XX साथ argLine config पैरामीटर निर्दिष्ट करना होगा: Maven-अचूक-प्लगइन विन्यास तत्व में -UseSplitVerifier।

+0

शायद आप तब जवाब स्वीकार कर सकते हैं। धन्यवाद। :) –

+4

पूर्व: ' org.apache.maven.plugins Maven-अचूक-प्लगइन <विन्यास> -XX: -UseSplitVerifier ' –

+0

कैसे चींटी का उपयोग करके ऐसा करने के लिए? मैंने क्या कोशिश की ? काम नहीं कर रहा। मैं जेडीके 6 यू 43 –

-1

आप "सुधार" बाईटकोड सत्यापनकर्ता (जो वास्तव में dumbed- नीचे किया जाता है ताकि यह मांग करता है एक बहुत अधिक सत्यापनकर्ता जानकारी संकलक द्वारा आपूर्ति की जा सकती है) की afoul चलाने लगते हैं। आपको या तो एक कंपाइलर स्ट्रिंग द्वारा संसाधित कोड प्राप्त करने की आवश्यकता है जो "बेहतर" बाइटकोड प्रारूप उत्पन्न करता है या अन्यथा "पुरानी" संस्करण में सेट की गई क्लास फ़ाइल का संस्करण है (जो मैं सोच रहा हूं 50.0 से कम कुछ होगा)।

+0

का उपयोग कर रहा हूं समस्या वास्तव में उपयोगकर्ता कोड में नहीं है, लेकिन उपकरण/पुस्तकालयों जैसे कि हाइबरनेट और CGLIB में है। उन उपकरणों को नई बाइटकोड आवश्यकताओं के बारे में पता नहीं है और स्पष्ट रूप से जावा 7 को लक्षित करने के लिए संकलित कक्षाओं के साथ अच्छी तरह से काम नहीं करते हैं। –

+0

@EugeneKuleshov - तो मैंने सुझाए गए दो में से एक के अलावा आप किस समाधान का प्रस्ताव देते हैं? –

+0

यह बात है। आपने वास्तव में मूल पोस्टर समस्या का समाधान नहीं दिया है, फिर भी बाइटकोड सत्यापनकर्ता के बारे में कुछ आक्रामक टिप्पणी की है। –

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

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