अभी कुछ दिनों पहले, मैं भी तुम्हारी तरह ही एक ही सवाल पर मिला था। मेरे स्थानीय मशीन पर सभी कोड अच्छी तरह से चलते हैं, लेकिन त्रुटि (noclassdeffound और initialize) निकलती है। इसलिए मैं अपना समाधान पोस्ट करता हूं, लेकिन मुझे नहीं पता कि क्यों, मैं केवल एक संभावना को आगे बढ़ाता हूं। मुझे आशा है कि कोई व्यक्ति इसे समझाएगा। @ जॉन विन्ट सबसे पहले, मैं आपको अपनी समस्या दिखाऊंगा। मेरे कोड में स्थिर चर और स्थिर ब्लॉक दोनों हैं। जब मैं पहली बार इस समस्या से मिला, मैंने जॉन विंट के समाधान की कोशिश की, और अपवाद को पकड़ने की कोशिश की। हालाँकि, मैंने कुछ नहीं पकड़ा। इसलिए मैंने सोचा कि यह स्थिर चर है (लेकिन अब मुझे पता है कि वे एक ही चीज हैं) और अभी भी कुछ भी नहीं मिला। इसलिए, मैं लाइनक्स मशीन और मेरे कंप्यूटर के बीच अंतर खोजने की कोशिश करता हूं। तब मैंने पाया कि यह समस्या केवल तब होती है जब कई थ्रेड्स एक प्रक्रिया में चलते हैं (वैसे, लाइनक्स मशीन में डबल कोर और डबल कोर होता है)। इसका मतलब है कि अगर दो प्रक्रियाएँ हैं (दोनों उस कोड का उपयोग करती हैं जिसमें स्टैटिक ब्लॉक या वैरिएबल हैं) एक ही प्रक्रिया में चलते हैं, तो यह गलत हो जाता है, लेकिन यदि वे अलग-अलग प्रक्रियाओं में चलते हैं, तो दोनों ठीक हैं। लिनक्स मशीन में, मैं उपयोग करता हूं
mvn -U clean test -Dtest=path
किसी कार्य को चलाने के लिए, और क्योंकि मेरा स्थिर चर एक कंटेनर शुरू करने के लिए है (या शायद आप एक नए क्लास लोडर को इनिशियलाइज़ करते हैं), इसलिए यह तब तक रहेगा जब तक कि jvm बंद नहीं हो जाता, और jvm तभी रुकता है जब एक प्रक्रिया में सभी कार्य रुक जाते हैं। प्रत्येक कार्य एक नया कंटेनर (या क्लास लोडर) शुरू करेगा और यह jvm को भ्रमित करता है। परिणामस्वरूप, त्रुटि होती है। तो, इसे कैसे हल किया जाए? मेरा समाधान मावेन कमांड में एक नई कमांड जोड़ना है, और प्रत्येक कार्य को एक ही कंटेनर में जाना है।
-Dxxx.version=xxxxx #sorry can't post more
हो सकता है कि आपने इस समस्या को पहले ही हल कर लिया हो, लेकिन फिर भी यह आशा करता है कि यह दूसरों को भी मदद करेगा जो एक ही समस्या को पूरा करते हैं।