runtime - What causes "java.lang.IncompatibleClassChangeError: vtable stub"? -
क्या कारण "java.lang.IncompatibleClassChangeError: vtable stub"? हमारे आवेदन में, हमने इस त्रुटि को बेतरतीब ढंग से और बहुत ही कम (केवल दो बार अभी तक, और हम इसे बहुत कुछ चलाते हैं) पॉप अप देखा है। यह पुन: तैयार करने योग्य नहीं है, यहां तक कि ऐप को पुन: प्रारंभ करने पर भी, इसे पुनर्निर्माण के बिना एक ही jvm / jars का उपयोग करके।
हमारी निर्माण प्रक्रिया के लिए, हम सभी वर्गों / जारों को साफ करते हैं और उन्हें पुनर्निर्माण करते हैं, इसलिए यह एक ही समस्या नहीं है जैसा कि दूसरों ने सामना किया है, जहां उन्होंने एक वर्ग में बदलाव किया और कुछ अन्य आश्रित वर्गों को पुनः कंपाइल नहीं किया।
यह असंगत क्लास चेंज त्रुटि से संबंधित कुछ अन्य प्रश्नों के विपरीत नहीं है - उनमें से कोई भी "vtable stub" । वास्तव में, "असंगत क्लास चेंज त्रुटि" vtable stub "" के लिए खोज करते समय आश्चर्यजनक रूप से कुछ Google परिणाम होते हैं।
संपादित करें:
- JDK 1.6 का उपयोग करना 0_16।
- हम जावा सीरियलायज़ेशन का उपयोग नहीं कर रहे हैं।
- हम बाइटकोड हेरफेर नहीं कर रहे हैं।
- जैसा कि पहले उल्लेख किया गया है, हम "स्वच्छ बिल्ड" कर रहे हैं, इसलिए पिछले बिल्ड से कोई वर्ग नहीं छोड़ा जाता है।
जेवीएम बाइट- कोड दुनिया Javadoc देखो: "जब एक असंगत वर्ग परिवर्तन कुछ वर्ग की परिभाषा में हुई है फेंक दिया कुछ वर्ग की परिभाषा, जिस पर वर्तमान में क्रियान्वित विधि निर्भर करती है, उसके बाद से बदली हुई है। "
देखने के लिए गुंजाइश स्थिर अंतिम शाब्दिक मूल्यों में बदलाव होंगे क्योंकि ये बाइट कोड में" अनुकूलन "। संपादित करें: यह एक लाइब्रेरी अपग्रेड के परिणाम के रूप में उतना आसान हो सकता है, केवल मुझे ठीक से पता है कि यह एक साफ पुनर्निर्माण है।
Comments
Post a Comment