Błędy „Musi zastąpić metodę nadklasy” po zaimportowaniu projektu do środowiska Eclipse

1250

Za każdym razem, gdy muszę ponownie zaimportować moje projekty do Eclipse (jeśli ponownie zainstalowałem Eclipse lub zmieniłem lokalizację projektów), prawie wszystkie moje zastąpione metody nie są poprawnie sformatowane, co powoduje błąd:

Metoda musi zastąpić metodę nadklasy

Warto wspomnieć, że z jakiegoś powodu dotyczy to projektów Androida, wartości argumentów metody nie zawsze są wypełniane, więc muszę je ręcznie wypełnić. Na przykład:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

zostanie początkowo wypełniony w następujący sposób:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

Dziwne jest to, że jeśli usunę mój kod i jeśli Eclipse automatycznie odtworzy metodę, użyje tych samych nazw argumentów, które już miałem, więc tak naprawdę nie wiem, gdzie jest problem, poza tym, że automatycznie formatuje metodę mnie.

Staje się to dość uciążliwe, gdy trzeba ręcznie ręcznie odtworzyć WSZYSTKIE moje zastąpione metody. Jeśli ktoś może wyjaśnić, dlaczego tak się dzieje lub jak to naprawić. Byłabym bardzo szczęśliwa.

Może wynika to ze sposobu, w jaki formatuję metody zawarte w argumencie innej metody?

Tim H.
źródło
1
Sprawdź ten element, wyjaśnia on użycie zastąpienia. Uważam, że ta praktyka jest bardzo ważna we wszystkim, nie tylko w tej sytuacji. stackoverflow.com/questions/94361/…
oagostinho,

Odpowiedzi:

1432

Domyślnie Eclipse to Java 1.5 i masz klasy implementujące metody interfejsu (które w Javie 1.6 mogą być opatrzone adnotacjami @Override, ale w Javie 1.5 mogą być stosowane tylko do metod zastępujących metodę nadklasy).

Przejdź do preferencji projektu / IDE i ustaw poziom kompilatora Java na 1.6, a także upewnij się, że wybierasz JRE 1.6, aby uruchomić program z Eclipse.

alphazero
źródło
35
Mój projekt został ustawiony na 1.6, więc strzeliłem do gwiazd i ustawiłem go na 1.5, przebudowany, a potem z powrotem na 1.6. Cudownie rozwiązało to mój problem. Dzięki za wskazanie mi właściwego kierunku!
Michael Krauklis
6
mając ten sam problem ... wypróbowałem sugestię podaną w tej odpowiedzi, ale nadal nie udało się. :( :(
aditya_gaur
6
@MichaelKrauklis Mam 1.6 i mam ten problem. Ustawiłem na 1,5 i wyczyściłem go, a potem z powrotem na 1.6 i wyczyściłem go ponownie. Wciąż nierozwiązane. Jakieś pomysły?
Pacerier
6
Ten sam problem tutaj, w moim przypadku, nie zainstalowałem JDK 1.6, tylko najnowszy 1.7, który najwyraźniej nie działa z Androidem. Instalacja starszej wersji 1.6, a następnie postępowanie zgodnie z tymi instrukcjami, powinna działać :)
NoBugs
4
Należy wspomnieć (podobnie jak w komentarzach do innych odpowiedzi) często wymagana jest czysta kompilacja, po której następuje restart.
gsingh2011
308

Z Eclipse Galileo przechodzisz do elementu menu Eclipse -> Preferencje, a następnie w oknie dialogowym wybierasz Java i kompilator.

Teraz nadal może pokazywać poziom zgodności kompilatora na poziomie 1.6, ale nadal występuje ten problem. Więc teraz wybierz link „ Konfiguruj ustawienia specyficzne dla projektu ... ”, a tam zobaczysz, że projekt jest ustawiony na 1,5, teraz zmień to na 1.6. Musisz to zrobić dla wszystkich projektów, których dotyczy problem.

Ten bizantyjski interfejs menu / okna dialogowego jest typowy dla złego projektu interfejsu użytkownika Eclipse.

Paweł
źródło
78

W przypadku, gdy zdarzy się to każdemu, kto spróbował zarówno metody alphazero, jak i Paula i nadal nie działał.

Dla mnie zaćmienie w jakiś sposób „buforowało” błędy kompilacji nawet po wykonaniu projektu> Wyczyść ...

Musiałem usunąć zaznaczenie opcji Projekt> Kompiluj automatycznie, a następnie wykonać projekt> Wyczyść, a następnie skompilować ponownie.

W razie wątpliwości spróbuj ponownie uruchomić Eclipse . To może naprawić wiele niezręcznych, niewytłumaczalnych błędów.

Rollin_s
źródło
4
Nie tylko to zrobiłem, ale zaznaczyłem opcję „Rozpocznij kompilację automatycznie” w oknie dialogowym Wyczyść. Dopiero wtedy zadziałało to dla mnie.
Wilerson
3
Musiałem zrestartować zaćmienie, nawet po usunięciu błędów.
Dave Cameron,
42

Aby rozwiązać ten problem, przejdź do właściwości projektu -> kompilator Java -> wybierz poziom zgodności kompilatora do 1.6-> Zastosuj.

false9striker
źródło
22

Odpowiedź Paula działała na mnie częściowo. Wciąż miałem wtedy jeden błąd. Oprócz tego musiałem także przejść do Właściwości-> Aspekty projektu i tam ustawić wersję Java od 1.5 do 1.6.

Może to pomaga.

Ulrich
źródło
14

Chłopaki w moim przypadku żadne z powyższych rozwiązań nie zadziałało.

Musiałem usunąć pliki w obszarze roboczym projektu:

  • .projekt
  • .classpath

I folder:

  • .settings

Następnie skopiowałem te z podobnego projektu, który wcześniej działał. To udało się naprawić mój zepsuty projekt.

Oczywiście nie używaj tej metody przed wypróbowaniem poprzednich alternatyw !.

will824
źródło
14

Jeśli nic z powyższych nie pomoże, upewnij się, że wybrano właściwe „ środowisko wykonywania ”, a nie „alternatywne środowisko JRE”.

Można znaleźć pod:

Projekt -> Ścieżka kompilacji -> Biblioteki

Wybierz JRE System Libraryi kliknij Edit....

Jeśli wybrano „Alternatywne środowisko JRE ...”, zmień je na pasujące „Środowisko wykonawcze”, takie jak JavaSE-1.8 (jre1.8.0_60). Nie mam pojęcia, dlaczego, ale to rozwiąże problem.

phil294
źródło
2
Wybrałem „Środowisko wykonania”, a następnie nacisnąłem OK i błąd zniknął. Następnie wróciłem do tego samego okna dialogowego i wybrałem „Domyślne środowisko robocze JRE (...)”, które było moim poprzednim wyborem, gdy otrzymywałem błąd z Eclipse, a następnie nacisnąłem OK, a błąd się nie pojawił?!? To musi być błąd interfejsu użytkownika Eclipse lub coś w tym stylu (korzystam z Eclipse Neon 4.6.2)
mljrg
11

To mój drugi raz, gdy napotykam ten problem. pierwszy raz zgodnie z zaleceniem alphazero zadziałało. ale po raz drugi ustawiłem na 1.6, to nie działa tak jak „CACHE” ten błąd po wyczyszczeniu i odbudowaniu.

Spróbuj wyłączyć „Kompiluj automatycznie”, jak powiedział Rollin_s -> błąd nadal tutaj!

Więc usunąłem problematyczny projekt (już ustawiony na 1.6) z Eksploratora pakietów i zaimportowałem go ponownie -> tym razem uruchomiłem odbudowę i tym razem nie wystąpił błąd

Mam nadzieję, że komuś to pomoże

ob.yann
źródło
10

Naprawa musi zastąpić błąd metody superklasy nie jest trudna, wystarczy zmienić wersję źródła Java na 1.6, ponieważ z Java 1.6 @Override można używać adnotacji wraz z metodą interfejsu. Aby zmienić wersję źródłową na 1.6, wykonaj następujące czynności:

  1. Wybierz Projekt, kliknij prawym przyciskiem myszy, Właściwości
  2. Wybierz kompilator Java i zaznacz pole wyboru „Włącz ustawienia specyficzne dla projektu”
  3. Teraz ustaw poziom zgodności kompilatora na 1.6
  4. Zatwierdź zmiany
Sunil
źródło
10

W moim przypadku ten problem pojawił się, gdy zaimportowałem projekt Maven do Eclipse. Aby rozwiązać ten problem, dodałem pom.xml:

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

Następnie w menu kontekstowym projektu przejdź do „Maven -> Aktualizuj projekt ...” i naciśnij OK.

Otóż ​​to. Mam nadzieję że to pomoże.

mljrg
źródło
Dzięki, myślę, że to zastępuje nadrzędną konfigurację pom czy coś takiego. (I ad problem na odwrót, nie ma problemu z Eclipse, ale kompilator Maven męska wyrzucił mnie „należy zastąpić itd.”)
Asoub
6

W moim przypadku żadne z powyższych rozwiązań nie działa. Muszę pobrać mój kod źródłowy do innego folderu. Z zaćmienia wybierz Plik> Przełącz obszary robocze> Inne ..., a następnie zaimportuj kod do nowych obszarów roboczych. potem działa.

Hắc Huyền Minh
źródło
2

Dzieje się tak, gdy projekt maven używa innego poziomu zgodności kompilatora, a Eclipse IDE używa innego poziomu zgodności kompilatora. Aby to naprawić, musimy zmienić poziom zgodności kompilatora projektu Maven na poziom używany przez IDE.

1) Aby zobaczyć poziom zgodności z kompilatorem Java, używa w Eclipse IDE

*) Okno -> Preferencje -> Kompilator -> Poziom zgodności kompilatora: 1.8 (lub 1.7, 1.6 ,, ect)

2) Aby zmienić poziom zgodności kompilatora Java projektu Maven

*) Przejdź do „Projekt” -> „Właściwości” -> Wybierz „Kompilator Java” -> Zmień poziom zgodności kompilatora: 1.8 (lub 1.7, 1.6 ,, ect)

HashanR
źródło