java ग्रहण में एक परियोजना आयात करने के बाद त्रुटियों को 'सुपरक्लास विधि ओवरराइड करना चाहिए' त्रुटियां




android eclipse (10)

किसी भी समय मुझे अपनी परियोजनाओं को ग्रहण में पुन: आयात करना होगा (यदि मैंने ग्रहण को पुनर्स्थापित किया है, या परियोजनाओं के स्थान को बदल दिया है), लगभग सभी मेरे ओवरराइड विधियों को सही ढंग से स्वरूपित नहीं किया गया है, त्रुटि उत्पन्न करने के कारण The method must override a superclass method

यह उल्लेखनीय हो सकता है कि एंड्रॉइड प्रोजेक्ट्स के साथ यह है - किसी भी कारण से, विधि तर्क मान हमेशा पॉप्युलेट नहीं होते हैं, इसलिए मुझे उन्हें मैन्युअल रूप से पॉप्युलेट करना होगा। उदाहरण के लिए:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

शुरुआत में इस तरह से पॉप्युलेट किया जाएगा:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

अजीब बात यह है कि, यदि मैं अपना कोड हटा देता हूं, और ग्रहण स्वचालित रूप से विधि को फिर से बना देता है, तो यह मेरे द्वारा पहले से ही समान तर्क नामों का उपयोग करता है, इसलिए मुझे वास्तव में पता नहीं है कि समस्या कहां है, अन्यथा यह विधि को स्वचालित रूप से स्वरूपित कर रहा है मुझे।

हाथ से मेरे सभी ओवरराइड तरीकों को मैन्युअल रूप से पुन: बनाने के लिए यह काफी दर्द हो जाता है। अगर कोई यह समझा सकता है कि ऐसा क्यों होता है या इसे कैसे ठीक किया जाए .. मैं बहुत खुश हूं।

हो सकता है कि जिस तरह से मैं विधियों को स्वरूपित कर रहा हूं, जो किसी अन्य विधि के तर्क के अंदर हैं?


मेरे मामले में यह समस्या तब हुई जब मैंने ग्रहण में एक मेवेन परियोजना आयात की। इसे हल करने के लिए, मैंने निम्नलिखित pom.xml में जोड़ा:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

फिर प्रोजेक्ट के संदर्भ मेनू में, "मैवेन -> अपडेट प्रोजेक्ट ..." पर जाएं, और ठीक दबाएं।

बस। उम्मीद है की यह मदद करेगा।


यदि यह किसी और के साथ होता है जिसने अल्फाज़ेरो और पॉल की विधि दोनों की कोशिश की और अभी भी काम नहीं किया।

मेरे लिए, प्रोजेक्ट> क्लीन ... के बाद भी किसी भी तरह संकलन त्रुटियों को 'कैश्ड' ग्रहण करें

मुझे प्रोजेक्ट अनचेक करना था> स्वचालित रूप से बनाएं, फिर एक प्रोजेक्ट> क्लीन करें, और फिर फिर से बनाएं।

साथ ही, जब संदेह हो, ग्रहण को पुनरारंभ करने का प्रयास करें । यह बहुत अजीब, अस्पष्ट त्रुटियों को ठीक कर सकता है।


पॉल द्वारा जवाब आंशिक रूप से मेरे लिए काम किया। तब भी मुझे एक त्रुटि थी। इसलिए, इसके अलावा, मुझे प्रॉपर्टी-> प्रोजेक्ट फ़ैक्स पर भी जाना पड़ा और वहां जावा संस्करण 1.5 से 1.6 तक सेट किया गया।

शायद यह मदद करता है।


ग्रहण गैलीलियो के साथ आप एक्लिप्स -> प्राथमिकता मेनू आइटम पर जाते हैं, फिर संवाद में जावा और कंपाइलर का चयन करें।

अब यह 1.6 पर संकलक अनुपालन स्तर दिखा सकता है, फिर भी आप अभी भी यह समस्या देखते हैं। तो अब " परियोजना विशिष्ट सेटिंग्स कॉन्फ़िगर करें ... " लिंक का चयन करें और वहां आप देखेंगे कि प्रोजेक्ट 1.5 पर सेट है, अब इसे 1.6 पर बदलें। आपको सभी प्रभावित परियोजनाओं के लिए ऐसा करने की आवश्यकता होगी।

यह बीजान्टिन मेनू / संवाद इंटरफ़ेस ग्रहण के खराब यूआई डिज़ाइन की विशिष्टता है।


विंडोज़-> वरीयताओं -> जावा -> कंपाइलर पर जाएं -> 1.6 तक कंपाइलर अनुपालन स्तर का चयन करें (आप जो संस्करण चाहते हैं) -> लागू करें-> ठीक है। अब इसका काम


मेरे मामले में दोस्तों ने उपर्युक्त समाधानों में से कोई भी काम नहीं किया।

मुझे प्रोजेक्ट वर्कस्पेस के भीतर फ़ाइलों को हटाना पड़ा:

  • .project
  • .classpath

और फ़ोल्डर:

  • ।सेटिंग्स

तब मैंने उन लोगों को एक समान परियोजना से कॉपी किया जो पहले काम कर रहा था। यह मेरी टूटी हुई परियोजना को ठीक करने में कामयाब रहा।

बेशक पिछले विकल्पों की कोशिश करने से पहले इस विधि का उपयोग न करें!


फिक्स्डिंग को एक सुपर क्लास विधि त्रुटि को ओवरराइड करना मुश्किल नहीं है, आपको जावा स्रोत संस्करण 1.6 में बदलने की जरूरत है क्योंकि जावा 1.6 @ ओवरराइड एनोटेशन से इंटरफ़ेस विधि के साथ उपयोग किया जा सकता है। स्रोत संस्करण को 1.6 में बदलने के लिए नीचे दिए गए चरणों का पालन करें:

  1. प्रोजेक्ट का चयन करें, राइट क्लिक करें, गुण
  2. जावा कंपाइलर का चयन करें और चेक बॉक्स को चेक करें "परियोजना विशिष्ट सेटिंग्स सक्षम करें"
  3. अब 1.6 तक कंपाइलर अनुपालन स्तर बनाओ
  4. परिवर्तन लागू करें

यह मेरी दूसरी बार इस समस्या का सामना करना पड़ता है। अल्फाज़ेरो की सिफारिश के अनुसार पहली बार यह काम किया। लेकिन दूसरी बार जब मैं 1.6 पर सेट करता हूं तो यह साफ और पुनर्निर्माण के बाद इस त्रुटि को 'कैच' की तरह काम नहीं करता है।

Rollin_s ने कहा - 'स्वचालित रूप से बनाएं' को बंद करने का प्रयास करें -> अभी भी त्रुटि!

इसलिए मैंने पैकेज एक्सप्लोरर से समस्या प्रोजेक्ट (पहले से 1.6 पर सेट किया) हटा दिया और इसे फिर से आयात किया -> यह पुनर्निर्माण शुरू करता है और इस बार कोई त्रुटि नहीं

उम्मीद है कि यह किसी की मदद करेगा


यदि उपर्युक्त में से कुछ भी मदद नहीं करता है, तो सुनिश्चित करें कि आपके पास उचित " निष्पादन पर्यावरण " चुना गया है, कि "वैकल्पिक जेआरई"।

नीचे पाया जा सकता है:

परियोजना -> पथ बनाएं -> पुस्तकालय

JRE System Library चयन करें और Edit... क्लिक Edit...

यदि "वैकल्पिक जेआरई ..." चुना गया है, तो इसे JavaSE-1.8 (jre1.8.0_60) जैसे "निष्पादन पर्यावरण" में JavaSE-1.8 (jre1.8.0_60) । कोई विचार नहीं क्यों, लेकिन यह इसे हल करेगा।


ग्रहण जावा 1.5 में डिफॉल्ट हो रहा है और आपके पास इंटरफ़ेस विधियों को कार्यान्वित करने वाले वर्ग हैं (जो जावा 1.6 में @Override ओवरराइड के साथ एनोटेटेड हो सकते हैं, लेकिन जावा 1.5 में केवल सुपरक्लास विधि ओवरराइड करने के तरीकों पर लागू किया जा सकता है)।

अपनी प्रोजेक्ट / आईडीई वरीयताओं पर जाएं और जावा कंपाइलर स्तर 1.6 पर सेट करें और यह भी सुनिश्चित करें कि आप ग्रहण से अपने प्रोग्राम को निष्पादित करने के लिए जेआरई 1.6 का चयन करें।





superclass