Uzupełnianie kodu Eclipse / Java nie działa


594

Pobrałem, rozpakowałem i skonfigurowałem Eclipse 3.4.2 z niektórymi wtyczkami (zauważalne, EPIC, Clearcase, QuantumDB, MisterQ).

Teraz, gdy edytuję projekty Java, uzupełnianie kodu nie działa. Po wpisaniu String.i naciśnięciu ctrl+ spacewyskakujące okienko pokazuje „Brak domyślnych propozycji”, a pasek stanu na dole pokazuje „Brak dostępnych uzupełnień”.

Jakieś pomysły?


1
Dla tych z was, którzy próbują naprawić to na Ubuntu, [oto odpowiedź] [1]. [1]: askubuntu.com/questions/243639/…
syntagma

Odpowiedzi:


1245

Spróbuj przywrócić domyślne opcje w „ Windows > Preferences > Java > Editor > Content Assist > Advanced

Przykład rodzaju danych wyświetlanych na tym ekranie preferencji, ale niekoniecznie to, co aktualnie masz.

ustawienie wspomagania zawartości zaćmienia

(Od Vadima w tym poście na blogu „Content Assist Duplicates in Eclipse (Mylyn)” :
jeśli masz zduplikowane wpisy Mylyn, odznacz zduplikowane wpisy, które nie zawierają „ (Mylyn)” w nazwie)

Strona pomocy Eclipse definiuje domyślną listę do przywrócenia:

Wybierz rodzaje propozycji zawarte na „domyślnej” liście pomocy treści :

  • Inne propozycje Java,
  • Propozycje szablonów SWT,
  • Propozycje szablonów,
  • Typ propozycji

3
nie mam pojęcia, jak to się zmieniło w moim środowisku - na pewno tego nie zrobiłem, ale twoje rozwiązanie działa! dzięki.
pstanton

71

Dodaję tutaj odpowiedź na wypadek, gdyby ktoś znalazł ją w Google. Te same objawy; inny problem. Dla mnie pamięć podręczna typów uległa uszkodzeniu.

From http://mschrag.blogspot.co.nz/2009/01/open-type-cant-find-your-class.html

  • Wyjdź z Eclipse
  • Przejdź do obszaru roboczego / .metadata / .plugins / org.eclipse.jdt.core
  • Usuń * .index i saveIndexNames.txt
  • Zrestartuj Eclipse i wyszukaj Ctrl+ Tobrażający typ. Indeksy zostaną odbudowane.

+1, to zadziałało dla mnie. Wcześniej cierpiałem na Eclipse, myśląc, że mój projekt był w wersji 1.5, mimo że wszystkie opcje mówią inaczej, więc musiał zostać uszkodzony podczas tego problemu.
Philip Guin

3
Czekaj, nieważne. Po wypróbowaniu tej metody CA działa dokładnie raz, a następnie ponownie wysadza się w powietrze. Ugh. Problem nie ustępuje nawet po odtworzeniu całego obszaru roboczego. Wydaje się, że żadne inne rozwiązanie tutaj nie działa ...
Philip Guin

2
+1. Uwaga: jeśli spróbujesz wspomagać zawartość wyrażeniem lambda, może nie być dobrze obsługiwana przez twoją wersję Eclipse.
Bludwarf,

Tak dobrze działało. Dziękuję Ci!
Modo

27

Jeśli ktoś tu przychodzi i chce aktywować funkcję autouzupełniania, przejdź do

Preferences -> Java -> Editor -> Content Assist.

Następnie w sekcji Automatyczna aktywacja wpisz wyzwalacze Automatycznej aktywacji dla Java:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._

wprowadź opis zdjęcia tutaj


Może to spowodować bardzo wolne zaćmienie dzięki dużej bazie kodu.
J-ho

19

Dla osób korzystających z Xfce + z włączoną wtyczką IBus może wystąpić konflikt skrótów klawiaturowych.

Zobacz więcej informacji na moim blogu: http://peter-butkovic.blogspot.de/2013/05/keyboard-shortcut-ctrlspace-caught-in.html

AKTUALIZACJA :

jak sugeruje komentarz @ nhahtdh, dodając kilka dodatkowych informacji, aby odpowiedzieć bezpośrednio: Wtyczka IBus w Xfce używa domyślnie Ctrl+ Spaceskrótu do przełączania układu klawiatury. Aby go zmienić, przejdź do: Opcje i zmień go na cokolwiek innego.


3
Podaj tutaj istotne części swojego bloga, na wypadek, gdyby w przyszłości stał się niedostępny.
nhahtdh

2
Ten sam problem w LXDE. Przejdź do Preferences-> Keyboard Inputi usuń Next input methodskrót.
Kshitiz Sharma

1
Te same problemy występują w środowisku pulpitu Cinnamon.
Akkusativobjekt

11

Sprawdź lib swojego projektu. Możliwe, że masz dwa takie pliki jar, w których dostępna jest ta sama klasa, albo powiedz, że jedną klasę kodu można uzupełnić w dwóch plikach jar. W takim przypadku również zaćmienie przestaje asystować kodowi, ponieważ jest całkowicie pomieszany.

Lepszym sposobem na sprawdzenie tego jest przejście do pliku, w którym asystent nie działa i skomentowanie wszystkich importów tam, niż dodawanie importów jeden po drugim i sprawdzanie przy każdym imporcie, czy asystent kodu działa, czy nie. Możesz łatwo znaleźć klasę ze zduplikowanymi referencjami .


9

Żadne z tych nie działało dla mnie.

Ten problem występował tylko raz w konkretnej klasie. To, co w końcu zadziałało, to usunięcie obraźliwej klasy i odtworzenie jej. Problem rozwiązany ... tajemnica nie tyle!


5

Jeśli masz zainstalowany Google Toolbar dla IE, być może możesz napotkać ten sam problem. Ponieważ pasek narzędzi przechwytuje skrót Ctrl +Space.


5

Miałem ten problem i jak @Marc, tylko na określonej klasie. Odkryłem, że muszę wyznaczyć Open With = Java Editor. Jako początkujący Eclipse nawet nie zdawałem sobie sprawy, że używam zwykłego edytora tekstu.

W eksploratorze pakietów kliknij plik prawym przyciskiem myszy i wybierz „Otwórz za pomocą”.


4

Napotkałem ten problem i spędziłem godziny próbując go rozwiązać. starałem się postępować zgodnie z krokami wymienionymi w różnych odpowiedziach powyżej, rozwiązanie, które znalazłem, jest takie same, jak sugerowała Mona, ale nieco inne. Próbowałem dodać jako komentarz do odpowiedzi Mony, ale żadna opcja nie była dostępna. Problem z moim zaćmieniem polegał na tym, że ścieżka klasy jakoś uległa uszkodzeniu, a brakowało wszystkich słoików i zależnych projektów. po pobraniu najnowszej ścieżki .clas z repozytorium działało dobrze.


4

Mam również do czynienia z tym problemem, ale rozwiązuje się go w inny sposób. Kroki, które wykonuję, mogą być pomocne dla innych.

  1. Kliknij projekt prawym przyciskiem myszy (ten, nad którym pracujesz)
  2. Wybierz Właściwości> Ścieżka kompilacji Java> Biblioteka systemowa JRE
  3. Kliknij Edytuj ... po prawej stronie
  4. Wybierz JRE 7

4

Po sprawdzeniu konfiguracji i zakończeniu nadal nie działa:

  • upewnij się, że masz odpowiednią strukturę katalogów.

Czy widzisz właściwą ikonę obok pliku ?:

wprowadź opis zdjęcia tutaj

Powie ci, jak plik będzie traktowany przez Eclipse:

wprowadź opis zdjęcia tutaj

Publikuję tę odpowiedź, ponieważ miałem tę historię z artefaktem aplikacji webowej Maven. Domyślnie Maven-WebApp nie tworzy folderów dla źródeł, a ja umieszczam Java w zasobach, zastanawiając się przez 5 minut, co się dzieje ... :)


3

Sprawdź, czy nie odfiltrowano wielu opcji w oknie> Preferencje> Java> Wygląd> Filtry typów

Elementy na tej liście nie pojawią się w szybkiej poprawce, zostaną automatycznie uzupełnione ani pojawią się w innych różnych miejscach, takich jak okno dialogowe Typ otwarty.


3

Innym rozwiązaniem, które działało dla mnie, jest przejście do Java -> Appearence -> Type Filters i wyłączenie wszystkichwprowadź opis zdjęcia tutaj


3

Może to pomaga innym osobom, które napotykają ten sam problem.

Moja konfiguracja: stary projekt Gradle (wersja Gradle 2.12) wykonany przez kogoś innego, zaimportowany za pomocą Kreatora importu Gradle do STS (Eclipse Oxygen.2 (4.7.2)).

Uzupełnianie kodu też nie działało (i nadal mam puste Js w plikach Java), ale przynajmniej dostałem uzupełnienie kodu do pracy, wykonując:

  • kliknij prawym przyciskiem myszy folder projektu> Właściwości> Stopień> Konfiguruj ustawienia obszaru roboczego> Java> Edytor> Content Assist> Zaawansowane
  • zaznacz „Propozycje Java w górnym oknie.
  • 2x Zastosuj i zamknij

2

W moim przypadku Intellisense zniknął tylko w kilku klasach w jednym projekcie. Okazało się, że było to spowodowane brakiem biblioteki na ścieżce kompilacji (chociaż wcześniej działała).

Więc zdecydowanie sprawdź wszystkie błędy lub problemy w Eclipse i spróbuj znaleźć, czy brakuje biblioteki


2

Natknąłem się na to i ostatecznie otworzyłem plik za pomocą edytora tekstu, a nie edytora Java.

Chciałem skomentować odpowiedź https://stackoverflow.com/users/607470/elroy-flynn, ale dodawanie komentarza działa tylko po uzyskaniu oceny 50? nie jestem pewien WTF, który jest ...

Dzięki, Tom


Blok reputacji jest po prostu po to, aby ludzie mieli powody, aby uzyskać więcej oprócz posiadania więcej. Ponieważ działa to również jako miara tego, jak zaangażowany i szanowany jesteś w społeczności (tj. Jako reputacja), zyskujesz więcej przywilejów, gdy zyskujesz lepszą reputację. Warto zapoznać się z przewodnikiem, aby uzyskać więcej wyjaśnień dotyczących działania witryny: stackoverflow.com/tour .
Amndeep7

To naprawdę tylko komentarz. Wspomniana odpowiedź obejmuje już problem edytora tekstu. Rozumiem, jeśli nie chcesz go usunąć i stracić karmę.
Noumenon

1

Dla mnie problemem był konflikt między kilkoma wersjami tej samej biblioteki. Asystent Eclipse korzystał ze starszej wersji niż maven.

Musiałem przejść do katalogu .m2 i usunąć niechcianą wersję lib + zrestartować zaćmienie.


1

Mam problemy z Eclipse Neon podczas edycji pliku, który nie należy do katalogu projektu . Gdy kopiuję ten sam plik do katalogu głównego projektu, nawet do katalogu src, uzupełnianie zaczyna działać.

Gdy plik jest otwierany z innego katalogu, działa tylko uzupełnianie dla JRE. To znaczy: java.kończy, ale junit.nie robi.


1

Na wypadek, gdyby ktoś znalazł się w rozpaczliwym punkcie, w którym nic nie działa ... Zdarzyło się nam, że asystent zawartości jakoś skurczył się, więc nie pojawiła się żadna sugestia, można było zobaczyć „Press Ctrl + Space for non-Java ...”. Tak więc wystarczyło przeciągnąć róg asystenta zawartości, aby powiększyć wyskakujące okienko.

Wiem, żenujące. Mam nadzieję, że to pomoże.

Uwaga: był to serwer Ubuntu z Xfce4 korzystający z Eclipse Oxygen.


1

Dla tych, którzy używają najnowszej wersji 3-19 eclipse:

Zdarzyło mi się to podczas aktualizacji z Oxygen do 3-19 wersji eclipse, więc zakładam, że funkcja autouzupełniania nie migrowała poprawnie podczas procesu aktualizacji.

Jedynym rozwiązaniem, które działało dla mnie, było utworzenie nowego obszaru roboczego zaćmienia i zaimportowanie do niego projektu / projektów. Może to potrwać kilka minut, ale warto - w porównaniu do czasu poświęconego na inne rozwiązania ...


Tak, dla mnie nie mogę przeglądać metod Java, kliknij Przeglądaj / Otwórz deklarację nie działa. I dzieje się to dość często, pliki klasy java skutecznie stały się plikami tekstowymi. Więc ciągle usuwam obszar roboczy i importuję projekt maven, z powrotem do działania za minutę.
signonsridhar


0

Wystąpił ten problem od czasu aktualizacji do Eclipse 2019-09. W oparciu o niektóre z powyższych sugestii, to działało dla mnie.

Musiałem przejść do Eclipse -> Preferencje -> Java -> Edytor -> Content Assist -> Advanced.

Zaawansowany edytor Java / Content Assist

Dowiedziałem się, że jeśli włączę dowolną propozycję powiązania klawiszy, propozycję Java Non-Type, Java, Java (Task-Focused) lub Java Type, wtedy będę mógł użyć funkcji autouzupełniania. Jeśli włączyłem je wszystkie, to nie tylko wykonałem automatyczną pracę, ale pojawiło się na liście zduplikowane metody. Zgaduję, ale prawdopodobnie użyję propozycji typu Java. Docenione zostanie wszelkie wyjaśnienie różnic między tymi czterema typami.


0

Uruchamianie STS w projektach Java Spring Boot, oto co dla mnie działa:

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.