web-dev-qa-db-fra.com

La complétion de code IntelliJ ne fonctionne pas pour les nouvelles classes Java

IntelliJ IDEA 13 a commencé à présenter un comportement très étrange dans ma configuration locale.

À savoir, dans toute nouvelle classe Java ajoutée à un projet existant, Code Completion ne marche pas. Ainsi, après avoir déclaré une variable d'objet de tout type dans la nouvelle classe, puis tapé le nom de cette variable, suivi du point (.), Aucune suggestion n'est proposée pour l'une des méthodes de l'objet correspondant.

Par exemple, après avoir déclaré

File f = new File("/home");

taper f. ne fait pas apparaître une liste de toutes les méthodes de la classe File, pour en sélectionner une. En effet, lors de la frappe du point (.), Aucune suggestion n'apparaît et en bas à gauche (dans la barre d'état) de la fenêtre IDE, le message "Identifiant attendu. Identifiant attendu . "s'affiche. Parfois, une longue liste de méthodes totalement non pertinentes provenant de composants ou de bibliothèques non pertinents est proposée.

Étrangement, Code Completion fonctionne comme prévu si la déclaration ci-dessus se produit dans l'une des classes existantes.

Ce comportement persiste après de nombreuses combinaisons de redémarrage de l'ordinateur, IDE redémarrage, réimportation de projet, fermeture/réouverture ou reconstruction.

Des idées?

18
PNS

Pour les abonnés, une chose qui m'a aidé (la saisie automatique ne montrait que les instances de champ de distribution, etc.) était que j'avais ouvert un module maven qui ne se connectait pas correctement à ses enfants (il avait une section de sous-modules commentée), donc IntelliJ a juste montré les fichiers maven Java en tant que fichiers "texte" avec un petit "j" dans leur icône dans le volet projet. Correction du fichier racine maven pom.xml pour inclure les répertoires enfants en tant que modules et voila, ils sont traités comme de vrais fichiers Java encore une fois, woot!

13
rogerdpack

Assurez-vous de marquer tous vos répertoires source comme tels dans Fichier -> Structure du projet -> Modules.

22
Hubert

Assurez-vous que vous n'êtes pas en mode d'économie d'énergie lorsque vous exécutez IntelliJ (Fichier [menu] -> Mode d'économie d'énergie coché ou non). Si le mode d'économie d'énergie est activé, IntelliJ ne s'exécutera pas tâches en arrière-plan, y compris l'achèvement du code .

20
Makoto

J'utilise IntelliJ Ultimate 2017.1 et j'ai rencontré un problème similaire. Le projet Maven essayait d'utiliser les API Selenium, mais l'intellisense n'a pas fait apparaître de méthodes relatives pour moi.

Voici comment j'ai résolu mon problème:

Faites un clic droit sur le dossier src de votre projet
Choisissez Mark Directory As Sélectionnez ensuite Sources Root

9
zoe jiang

J'ai eu ce même problème et il était dû au fait que je n'avais pas de dossier marqué comme racine des sources.

Faites un clic droit sur votre répertoire src et sur Marquer le répertoire comme> Racine des sources.

4
hurlman

Coupez le dossier .idea et les fichiers * .iml dans le dossier racine et collez-les ailleurs dans le projet. lorsque vous rouvrez le projet, l'importation automatique fonctionnera à nouveau comme par magie.

3
İlker

Il ne s'agit pas d'IntelliJ 13 mais d'une version communautaire 2017.1.1 plus récente. Ajouter cette réponse ici pour que les autres bénéficient d'une cause qui a ses racines dans les configurations Gradle.

Maintenant, dans mon cas aussi, les méthodes de saisie automatique, de génération de remplacement et d'autres fonctionnalités ne fonctionnaient pas. Ce que j'ai compris, c'est que dans les paramètres de mon projet, j'avais plusieurs configurations pour les modules gradle. Au moment où j'ai nettoyé le reste des modules et conservé le seul (à part le test) dont j'avais besoin pour ce projet, tous les comportements étaient revenus à la normale.

Toujours dans de tels cas de projets Gradle, n'oubliez pas de marquer tous vos dossiers racine sourceSet et les dossiers Source.

Modifier: si vous ne souhaitez pas créer plusieurs configurations par sourceSet et que vous importez un module Gradle, sur l'écran d'importation, vous devez également désactiver l'indicateur Créer un module pour per sourceSet. Sans cela, je devais supprimer les multiples modules après avoir importé le module . Create module per sourceSet

2

Il pourrait y avoir 2 raisons à votre problème

  1. Soit le dossier source n'est pas correctement configuré dans votre build Java chemin de génération. Si le dossier source n'est pas correctement configuré, la saisie semi-automatique n'obtiendra pas les définitions de classe requises et la saisie semi-automatique échouera pour votre projet.
  2. Restauration des options par défaut dans 'Windows> Préférences> Java> Editeur> Assistant de contenu> Avancé'
2
user1792551

Faites un clic droit sur le projet -> Ajouter un support de framework -> Sélectionnez Maven -> Cliquez sur OK

2
BludShot

La seule chose qui a fonctionné pour moi a été de tuer IntelliJ (sur Ubuntu) et de le redémarrer.

2
Andrei C

J'étais confronté à ce problème lors du codage de l'extension client Eclipse-che. Les modules Eclipse che sont tous de type maven. Mon projet d'extension client était un module indépendant qui peut être compilé indépendamment du projet parent. Lorsque j'ai importé la même structure dans Intellij, mon projet d'extension côté client ne donnait pas de suggestions. Après avoir inclus le projet d'extension client au module parent (en l'ajoutant à pom.xml), les suggestions ont commencé à apparaître.

1
Purushothaman

J'avais un projet groovy où le jdk n'était pas défini comme une dépendance, donc les classes jdk ne se complèteraient pas automatiquement.

Réparer:

  1. structure du projet
  2. modules
  3. (votre module)
  4. onglet Dépendances.
  5. Dans le champ Module SDK, ajoutez un jdk.
1
Sander

Cela m'a aidé à marquer le répertoire src comme étant la "racine source". enter image description here

1
SilverC4t

Cela se passait pour moi dans un module qui n'était pas ajouté dans le pom du projet parent (ils l'ont fait exprès), c'est la raison pour laquelle j'ai fait un clic droit sur le pom.xml du module qui a le problème et a cliqué sur le

enter image description here

maintenant la saisie semi-automatique est venue et en plus de cela, je peux voir le module comme un projet distinct dans l'onglet maven en haut à droite.

1
mcvkr

J'ai eu un problème similaire, rien dans ce sujet n'a aidé.

Alors finalement je l'ai fait fonctionner, j'efface le cache d'IntelliJ et redémarre.

Fichier> Invalider les caches/redémarrer ..> Invalidate Cache and Restart (bouton)

enter image description here

1
miljon

Supprimez votre package des Paramètres> Éditeur> Général> Importation automatique> Java> Exclure de l'importation et de l'achèvement

J'avais rencontré ce problème. Aucune des solutions de ce message n'a fonctionné, mais j'ai pu le corriger car j'ai accidentellement mis le package de mon projet dans les paramètres "Exclure de l'importation et de l'achèvement".

change your intellij settings to include the package for completion

1
activedecay