L'achèvement du code Eclipse / Java ne fonctionne pas

596

J'ai téléchargé, décompressé et installé Eclipse 3.4.2 avec quelques plugins (notables, EPIC, Clearcase, QuantumDB, MisterQ).

Maintenant, je trouve que lorsque je modifie des projets Java, la complétion de code ne fonctionne pas. Si je tape String.et appuie sur ctrl+, spaceune fenêtre contextuelle affiche "Aucune proposition par défaut" et la barre d'état en bas affiche "Aucune achèvement disponible".

Des idées?

Robert Brown
la source
1
Pour ceux d'entre vous qui tentent de résoudre ce problème sur Ubuntu, [voici la réponse] [1]. [1]: askubuntu.com/questions/243639/…
syntagma

Réponses:

1247

Essayez de restaurer les options par défaut dans ' Windows > Preferences > Java > Editor > Content Assist > Advanced'

Un exemple du type de données que vous voyez dans cet écran de préférence, mais pas nécessairement ce que vous avez actuellement.

paramètre d'aide au contenu eclipse

(De Vadim dans cet article de blog "Content Assist Duplicates in Eclipse (Mylyn)" :
si vous avez des entrées Mylyn en double, décochez les entrées en double qui ne contiennent pas " (Mylyn)" dans leur nom)

La page d'aide d'Eclipse définit la liste par défaut à restaurer:

Sélectionnez les types de proposition contenus dans la liste d'assistance de contenu "par défaut" :

  • Autres propositions Java,
  • Propositions de modèles SWT,
  • Propositions de modèles,
  • Propositions de type
VonC
la source
3
Je ne sais pas comment cela a changé dans mon environnement - je ne l'ai certainement pas fait, mais votre solution fonctionne! Merci.
pstanton
71

J'ajoute une réponse ici au cas où quelqu'un d'autre trouverait cela sur Google. Mêmes symptômes; problème différent. Pour moi, les caches de type étaient devenus corrompus.

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

  • Quittez Eclipse
  • Accédez à workspace / .metadata / .plugins / org.eclipse.jdt.core
  • Supprimez * .index et savedIndexNames.txt
  • Redémarrez Eclipse et recherchez Ctrl+ Tpour le type incriminé. Les index seront reconstruits.
hoipolloi
la source
+1, cela a fonctionné pour moi. Je souffrais également auparavant d'Eclipse en pensant que mon projet était en 1.5 malgré toutes les options disant le contraire, il a donc dû être corrompu lors de ce problème.
Philip Guin
3
Attendez, peu importe. Après avoir essayé votre méthode, CA fonctionne exactement une fois, puis explose à nouveau. Pouah. Le problème persiste même après avoir recréé l'intégralité de l'espace de travail. Aucune autre solution ne semble fonctionner ici ...
Philip Guin
2
+1. Remarque: si vous essayez l'aide au contenu dans une expression lambda, elle peut ne pas être bien prise en charge par votre version Eclipse.
Bludwarf
A si bien fonctionné. Je vous remercie!
Modo
27

Si quelqu'un vient ici et souhaite activer la fonction de saisie semi-automatique, accédez à

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

Ensuite, dans la section Activation automatique , remplissez Déclencheurs d'activation automatique pour Java:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._

entrez la description de l'image ici

Hoa Vu
la source
Cela peut rendre votre éclipse très lente avec une grande base de code.
J-ho
19

Pour ceux qui exécutent Xfce + avec le plugin IBus activé, il peut y avoir un conflit de raccourcis clavier.

Voir plus d'informations sur mon blog: http://peter-butkovic.blogspot.de/2013/05/keyboard-shortcut-ctrlspace-caught-in.html

MISE À JOUR :

comme suggéré par le commentaire de @ nhahtdh, en ajoutant quelques informations supplémentaires pour répondre directement: le plugin IBus dans Xfce utilise par défaut Ctrl+ un Spaceraccourci pour changer la disposition du clavier. Pour le changer, allez dans: Options et changez-le en ce que vous préférez.

Peter Butkovic
la source
3
Veuillez inclure les parties essentielles de votre blog ici, au cas où il deviendrait indisponible à l'avenir.
nhahtdh
2
Même problème dans LXDE. Allez dans Preferences-> Keyboard Inputet supprimez le Next input methodraccourci.
Kshitiz Sharma
1
Les mêmes problèmes apparaissent avec l'environnement de bureau Cinnamon.
Akkusativobjekt
11

Vérifiez la bibliothèque de votre projet. Il se peut que vous ayez inclus deux de ces fichiers jar dans lesquels la même classe est disponible ou que vous disiez qu'une classe dans le code peut être réfrencée dans deux fichiers jar. Dans ce cas, eclipse arrête également d'assister le code car il est totalement confus.

Le meilleur moyen de vérifier cela est d'aller dans le fichier où l'assistance ne fonctionne pas et de commenter toutes les importations là-bas, que d'ajouter les importations une par une et de vérifier à chaque importation si l'assistance de code fonctionne ou non.Vous pouvez facilement trouver la classe avec des réfrences en double .

Mona
la source
9

Rien de tout cela n'a fonctionné pour moi.

Je rencontrais ce problème dans une seule classe particulière. Ce qui a finalement fonctionné pour moi a été de supprimer la classe incriminée et de la recréer. Problème résolu ... le mystère pas tellement!

Marc
la source
5

Si vous avez installé la barre d'outils Google pour IE, vous pouvez être confronté au même problème. Parce que, la barre d'outils capture le raccourci ctrl +Space.

Shashi
la source
5

J'ai eu ce problème et comme @Marc, uniquement sur une classe particulière. J'ai découvert que je devais désigner Open With = Java Editor. En tant que débutant Eclipse, je ne m'étais même pas rendu compte que j'utilisais simplement un éditeur de texte brut.

Dans l'explorateur de packages, cliquez avec le bouton droit sur le fichier et choisissez "Ouvrir avec".

Elroy Flynn
la source
4

J'ai fait face à ce problème et j'ai passé des heures à essayer de comprendre le problème. essayé de suivre les étapes mentionnées dans les différentes réponses ci-dessus, la solution que j'ai trouvée est sur les mêmes lignes que Mona a suggéré, mais légèrement différente. J'ai essayé d'ajouter un commentaire à la réponse de Mona, mais aucune option n'était disponible. Le problème avec mon éclipse était, classpath en quelque sorte corrompu et tous les pots et projets dépendants étaient manquants. après avoir pris le dernier .classpath du référentiel, cela a bien fonctionné.

Nirmal Mangal
la source
4

Je suis également confronté à ce problème, mais il est résolu de manière différente. Les étapes que je suis peuvent être utiles aux autres.

  1. Faites un clic droit sur le projet (celui sur lequel vous travaillez)
  2. Accédez à Propriétés> Chemin de génération Java> Bibliothèque système JRE
  3. Cliquez sur Modifier ... à droite
  4. Choisissez le JRE 7
asifaftab87
la source
4

Une fois que vous avez vérifié la configuration et que l'achèvement ne fonctionne toujours pas:

  • assurez-vous d'avoir la bonne structure de répertoires.

Voyez-vous l'icône de droite à côté du fichier?:

entrez la description de l'image ici

Il vous indiquera comment le fichier sera traité par Eclipse:

entrez la description de l'image ici

Je poste cette réponse car j'ai eu cette histoire avec l'artefact Maven Webapp. Par défaut, Maven-WebApp ne crée pas de dossier pour les sources et je mets mon Java dans les ressources, me demandant pendant 5 minutes ce qui se passait ... :)

Witold Kaczurba
la source
3

Vérifiez que vous n'avez pas filtré de nombreuses options dans la fenêtre> Préférences> Java> Apparence> Filtres de type

Les éléments de cette liste n'apparaîtront pas dans la correction rapide, ne seront pas complétés automatiquement ou n'apparaîtront pas à d'autres endroits comme la boîte de dialogue Ouvrir le type.

Aaron
la source
3

Une autre solution qui a fonctionné pour moi est d'aller dans Java -> Apparence -> Filtres de type et de désactiver tousentrez la description de l'image ici

user1889970
la source
3

Peut-être que cela aide d'autres personnes qui rencontrent le même problème.

Ma configuration: ancien projet Gradle (version Gradle 2.12) réalisé par quelqu'un d'autre, importé à l'aide de l'assistant d'importation Gradle dans STS (Eclipse Oxygen.2 (4.7.2)).

La complétion de code n'a pas fonctionné non plus (et j'ai toujours des J creux dans les fichiers Java), mais au moins j'ai obtenu la complétion de code en faisant:

  • clic droit sur le dossier du projet> Propriétés> Gradle> Configurer les paramètres de l'espace de travail> Java> Éditeur> Assistant de contenu> Avancé
  • cochez "Propositions Java dans la fenêtre supérieure.
  • 2x Appliquer et fermer
Togepi
la source
2

Dans mon cas, Intellisense n'avait disparu que dans quelques classes d'un projet. Il s'est avéré que c'était à cause d'une bibliothèque manquante sur le chemin de génération (bien que cela ait fonctionné précédemment).

Vérifiez donc définitivement toutes les erreurs ou problèmes dans Eclipse et essayez de trouver si une bibliothèque peut être manquante

arnehehe
la source
2

J'ai rencontré cela et j'ai fini par ouvrir le fichier avec l'éditeur de texte et non l'éditeur de java.

Je voulais commenter la réponse https://stackoverflow.com/users/607470/elroy-flynn mais le commentaire d'ajout ne fonctionne qu'après avoir obtenu une note de 50? pas sûr que WTF qui est ...

Merci Tom

Tom Orsi
la source
Le bloc de réputation est essentiellement juste pour que les gens aient des raisons d'en obtenir plus que d'en avoir plus. Puisqu'il agit également comme une mesure de la façon dont vous êtes impliqué et respecté dans la communauté (c'est-à-dire en tant que réputation), vous obtenez plus de privilèges à mesure que vous obtenez plus de réputation. Vous voudrez peut-être jeter un œil à la visite pour plus d'explications sur le fonctionnement du site: stackoverflow.com/tour .
Amndeep7
Ce n'est vraiment qu'un commentaire, la réponse que vous mentionnez couvre déjà le problème de l'éditeur de texte. Je comprends si vous ne voulez pas le supprimer et perdre le karma.
Noumenon
1

Pour moi, le problème était un conflit entre plusieurs versions de la même bibliothèque. L'assistant Eclipse utilisait une version plus ancienne que maven.

J'ai dû aller dans le répertoire .m2 et supprimer la version lib indésirable + redémarrer l'éclipse.

ilinca
la source
1

Je rencontre des problèmes sur Eclipse Neon lors de l' édition d'un fichier n'appartenant pas au répertoire du projet . Lorsque je copie le même fichier dans le répertoire racine du projet, pas même dans le répertoire src, l'achèvement commence à fonctionner.

Lorsque le fichier est ouvert à partir d'un répertoire différent, seule l'achèvement de JRE fonctionne. C'est par exemple: java.termine, mais junit.ne fait pas.

Jarekczek
la source
1

Juste au cas où quelqu'un arriverait à un point désespéré où rien ne fonctionne ... Il nous est arrivé que l'aide au contenu a quelque peu rétréci, donc aucune suggestion n'a été affichée, juste la "Appuyez sur Ctrl + Espace pour les non-Java ..." pouvait être vue. Il s'agissait donc simplement de faire glisser le coin de l'assistant de contenu pour agrandir la fenêtre contextuelle.

Je sais, embarrassant. J'espère que cela aide.

Remarque: il s'agissait d'un serveur Ubuntu avec Xfce4 utilisant Eclipse Oxygen.

tête
la source
1

Pour ceux qui utilisent la dernière version de l'éclipse 3-19:

Cela m'est arrivé lors de la mise à niveau d' Oxygen vers la version 3-19 eclipse, donc je suppose que la fonction de saisie semi-automatique n'a pas migré correctement pendant le processus de mise à niveau.

La seule solution qui a fonctionné pour moi a été de créer un nouvel espace de travail Eclipse et d'y importer le ou les projets. Cela peut prendre quelques minutes, mais cela en vaut la peine - par rapport au temps passé sur d'autres solutions ...

Naor Bar
la source
Oui pour moi, je ne peux pas parcourir les méthodes java, cliquez sur Parcourir / la déclaration d'ouverture ne fonctionne pas. Et cela se produit assez fréquemment, les fichiers de classe java sont effectivement devenus des fichiers texte. Je continue donc de supprimer l'espace de travail et d'importer le projet maven, de retour à l'action dans une minute.
signonsridhar
0

J'ai rencontré ce problème depuis la mise à niveau vers Eclipse 2019-09. Sur la base de certaines des suggestions ci-dessus, c'est ce qui a fonctionné pour moi.

J'ai dû aller dans Eclipse -> Préférences -> Java -> Éditeur -> Assistant de contenu -> Avancé.

Éditeur Java / Assistant de contenu avancé

J'ai découvert que si j'activais l'une des propositions de liaison clés, Java Non-Type, Java, Java (Task-Focused) ou Java Type, alors je pouvais utiliser la saisie semi-automatique. Si je les ai tous activés, non seulement le travail de terminaison automatique a été effectué, mais j'ai également répertorié les méthodes en double. Je suppose, mais je vais probablement utiliser des propositions de type Java. Toute clarification de ce qui diffère pour ces quatre types serait appréciée.

Bill Snee
la source
0

Exécuter STS sur des projets Java Spring Boot, voici ce qui fonctionne pour moi:

entrez la description de l'image ici

theRiley
la source