java - जूनियर परीक्षणों से "कांटेक्टेड जावा वीएम असामान्य रूप से बाहर निकल गया"




ant junit (11)

मेरे पास एक जावा जूनिट टेस्ट है जो एक विकास मशीन पर अकेले चलने पर गुजरता है। हमारे पास एक हडसन नौकरी भी है जो सभी परीक्षणों को चलाता है, चींटी के माध्यम से, जावा 1.5 के साथ मैक ओएस एक्स 10.4 नोड पर। हाल ही में जब तक हडसन के निर्माण में परीक्षण गुजर रहा था, लेकिन अब (कोई संबंधित कोड परिवर्तन के साथ) एक परीक्षण निम्न त्रुटि के साथ हर बार विफल होता है:

त्रुटि संदेश

जावा VM असामान्य रूप से बाहर निकल गया। कृपया ध्यान दें कि जब तक वीएम बाहर नहीं निकलता है रिपोर्ट में समय को प्रतिबिंबित नहीं करता है।

स्टैक ट्रेस

junit.framework.AssertionFailedError: Forked Java VM असामान्य रूप से बाहर निकल गया। कृपया ध्यान दें कि जब तक वीएम बाहर नहीं निकलता है रिपोर्ट में समय को प्रतिबिंबित नहीं करता है।

googling से पता चलता है कि कई अन्य लोग एक ही समस्या में भाग गए हैं, लेकिन मुझे कोई जवाब नहीं मिला।


क्या वीएम दुर्घटनाग्रस्त हो रहा है? क्या आप डंप फ़ाइल (जिसे hs_err_pid*.log कहा जाता है) पा सकते हैं? अगर ऐसा है, तो डंप फ़ाइल आपको सुराग देगी कि यह दुर्घटनाग्रस्त क्यों है।


मुझे इसी तरह के मुद्दे का सामना करना पड़ा। मैंने चींटी कार्य के रूप में जूनिट परीक्षण चलाए। मैंने शोउटपुट = "हाँ" चींटी की संपत्ति को जोड़ा और चींटी के काम को चलाया। इसके बाद अपवाद स्टैक ट्रेस दिखाई दिया, जिसके कारण कांटा jvm बाहर निकल गया।


मेरा भी यह मुद्दा था। से जूनियर कार्य बदलना:

<batchtest fork="yes" ... /> 

सेवा मेरे

<batchtest fork="no" ... /> 

यह मेरे लिए तय है। मैं चींटी के इस क्षेत्र को पूरी तरह से नहीं समझता हालांकि या ऐसा करने से यह ठीक क्यों होगा। मेरे परिदृश्य में यह "FirstFirstTest" में एक त्रुटि थी और मुझे लगता है कि यह मेरे क्लासपाथ में दो चींटी फाइलों के कारण बारफ्स है (जो शायद मुझे ठीक करने के लिए चाहिए)

मुझे लगता है कि समस्या चींटी के संस्करणों में से एक के साथ है: http://track.pmease.com/browse/QB-500/jsessionid=C1CF6999CBB505097A9CFCF4A11AF6C6??==com.atlassian.jira.plugin.system.issuetabpanels:tall

ईटीए: मुझे लगता है कि बैचस्टेस्ट = "नहीं" वास्तव में क्लासपाथ को बदलता है और इसलिए मेरे आक्रामक चींटी जार के बहिष्कार का परिणाम है।


मेरा मानना ​​है कि मैंने इस त्रुटि को एक बार देखा था जब मैंने अपने वर्गपथ पर कई संस्करणों के साथ समाप्त किया। हो सकता है इसे देखना महंगा न पड़े।


मेरे मामले में यह एक स्थिर इनिशियलाइज़र / मेथड / ब्लॉक एक वर्ग के अंदर एक अनकहा अपवाद है।

विशेष रूप से मेरे पास एक वर्ग था जिसे किसी अन्य कक्षा में एक स्थिर विधि कहा जाता था और यह एक नंबरफ़ॉर्मैट अपवाद को ट्रिगर कर रहा था।

BTW build.xml में कार्य करने के लिए "showoutput = true" जोड़कर समस्या निवारण में मदद नहीं की। चूंकि स्टैटिक ब्लॉक चलने वाली पहली चीजों में से एक है, इससे पहले कि कुछ भी आउटपुट कर सकता है, जेवीएम उड़ रहा था।


मेरे मामले में, क्लासपैथ जो कि मेरे परीक्षण चल रहे थे, जो एक पर्यावरण चर (उर्फ लिनक्स क्लासपाथ बहुत लंबा मुद्दा उर्फ) के लिए ऑपरेटिंग सिस्टम द्वारा अनुमत अधिकतम लंबाई से अधिक था

समाधान यह था कि एक पथिक जार बनाया जाए । सरलीकृत चरण:

  1. अपनी परियोजना का एक जार बनाने के लिए जार (या आपके आईडीई) का उपयोग करें, हम इसे MyProject.jar कहेंगे

  2. टेक्स्ट के साथ मेनिफेस्ट.टेक्स्ट नामक फाइल बनाएं

कक्षा-पथ: MyProject.jar

  1. जार कमांड लाइन इसे चलाएं

jar cfm PathingJar.jar मैनिफ़ेस्ट.टैक्स MyRootPackage / *। class

फिर, अपने बिल्ड टूल में, पाथिंग जार के खिलाफ अपना परीक्षण निर्देश चलाएं (अन्य वर्गों या जार में मिक्स-इन न करें)। तब मैं उस अपवाद के बिना अपने परीक्षण प्राप्त करने में सक्षम था।


मैं कुछ समय पहले एक ही बात थी। समस्या यह है कि System.exit () को कहीं न कहीं कहा जा रहा है। हालांकि यह पता लगाना मुश्किल हो सकता है, क्योंकि कॉल आपके कोड या आपके द्वारा उपयोग किए जाने वाले पुस्तकालयों में से किसी एक से आ सकती है।


मैंने TestNG लाइब्रेरी को टेस्ट लाइब्रेरी में जोड़ा और इसने समस्या को ठीक कर दिया।


मैंने निम्न परिवेश चर सेट करके अपनी समस्या हल की:

चर: _JAVA_OPTIONS मान: -Xms128m -Xmx512m


मैंने नेटबीन्स के एक नए संस्करण को बाहरी हार्ड डिस्क पर पुनः स्थापित करने, उसी समय जुनिट को अपग्रेड करने और अपने कार्यक्षेत्र का उपयोग करने के बाद समस्या का सामना किया।

मेरे लिए उसी समस्या का हल सरल था:

प्रोजेक्ट properties => Libraries => Compile Tests और Run Tests में ज्युनिट-लाइब्रेरी जोड़ें।

तो, मेरे मामले में, यह सिर्फ एक लापता पुस्तकालय या JUnit संस्करण संघर्ष था।


हमारे लिए, यह वास्तव में था कि हम दुर्घटना (ग्रहण के एक नए संस्करण का उपयोग करते हैं) ने अपने पुराने चींटी संस्करण के बजाय चींटी 1.7.x का उपयोग करना शुरू कर दिया था जो हमारे वेबलॉजिक 8.1 / JDK 1.4.x पर्यावरण के साथ संगत था। हमने इसे ग्रहण में चींटी होम को बदलकर तय किया-> विंडोज-> प्राथमिकताएं-> चींटी-> चींटी के पुराने संस्करण के लिए रनटाइम।

सादर क्लास





hudson