Obtenir «Impossible de trouver le symbole» dans un projet Java dans Intellij

96

Je fais cet appel à une instance de singleton statique de la classe GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javacontient la HUDclasse ainsi que deux autres classes associées, HUDTextElementet HUDElement. Toutes les classes sont dans le même chemin racine ../src/org/mypackage.

Cependant, lors de la compilation de ce projet java dans IntelliJ, je ne parviens pas à trouver Symbol HUD sur la ligne que HUD.getInstance()j'effectue.

Ce même code se compile très bien dans eclipse, une idée du problème?

Joe
la source
1
Avez-vous la classe HUD importée dans les deux?
Alex Coleman
c'est la seule solution à ce problème qui a fonctionné pour moi stackoverflow.com/a/56473166/8660553
Sahil SInghal

Réponses:

167

Sélectionnez Build-> Rebuild Project le résoudra

tiboo
la source
17
Remarque pour les noobs complets de Java / IntelliJ: ci-dessus est différent de "Build Project"
hiljusti
4
@JustinHill - Je connais bien l'éclipse et je suis nouveau dans IntelliJ. Pouvez-vous m'aider en ce qui concerne la différence entre les deux et les points / liens qui m'aident à régler mon temps avec IntellJ.
nanosoft
1
Je suis probablement une ressource pire qu'une recherche Google, je n'ai pas utilisé Eclipse. Mon commentaire est simplement que "Rebuild Project" et "Build Project" sont des options différentes (j'aidais quelqu'un qui est tombé sur ça et ils n'ont pas remarqué la différence entre les options)
hiljusti
1
Pourquoi cela a-t-il fonctionné? L'invalidation des caches et le redémarrage ne fonctionnaient même pas.
b15
A travaillé .... J'ai essayé d'exécuter "maven clean compile" mais cela ne
résolvait
54

J'ai eu le même problème et il s'avère que je n'avais jamais complètement compilé le nouveau projet. Donc, un clic droit et la sélection de Compiler '' (shift-cmd-F9 sur mac) l'a corrigé. Il semble que la compilation lors de l'enregistrement ne «voit» pas les fichiers non compilés.

Marquer le dossier src comme source n'a pas aidé dans mon cas.

Sjoerd K
la source
44

J'ai eu le même problème et je l'ai résolu en cliquant sur Fichier> Invalider les caches / redémarrer

ganninu93
la source
1
Attention , si vous avez des modifications et qu'elles ne sont pas validées, elles seront perdues. :)
Nikola
4
L'invalidation des caches n'entraîne pas la perte de modifications. Je ne sais même pas comment cela fonctionnerait. Si vous enregistrez un fichier, il est enregistré, indépendamment de la mise en cache IntelliJ ou de la validation dans un référentiel.
Christopher Schneider le
29

Il est probable que votre dossier ../src ne soit pas marqué comme dossier «source» dans Intellij IDEA, il ne sait donc pas y chercher pour trouver votre classe. Vous pouvez cliquer avec le bouton droit sur le dossier dans l'explorateur de projet et choisir «marquer comme dossier source» pour résoudre ce problème.

Paul Sanwald
la source
1 est une possibilité, mais ne lui donnerait-il pas une erreur disant qu'il n'a pas pu trouver le HUD, mais plutôt une erreur disant qu'il n'a pas la méthode getInstance / update?
Alex Coleman
cette option semble avoir disparu.
clankill3r
Non, il se transforme en options contextuelles: "Marquer le répertoire comme>"
Dracontis
Mon src contient un dossier de test à l'intérieur et plusieurs modules, après l'avoir marqué comme Source Root, mon problème est le pire.
Se Song du
Pour moi, c'était proche de la bonne réponse. Ma racine source était déjà marquée, mais j'ai dû "Décocher comme racine des sources", puis la marquer à nouveau comme racine des sources afin de corriger l'erreur.
yanni
26

J'obtenais la même erreur "Impossible de trouver le symbole" quand je l'ai fait Build -> Make Project. J'ai résolu ce problème en supprimant mon /targetdossier Maven , en cliquant avec le bouton droit sur mon module de projet et en faisant Maven -> Reimport, et en faisant Build -> Rebuild Project. C'était sur IntelliJ Idea 13.1.5.

Il s'est avéré que Maven -> Reimportc'était la clé, car le problème a refait surface à plusieurs reprises avant que je ne le fasse enfin.

Christian Wilkie
la source
12

Merci pour l'aide jusqu'à présent, il s'avère que le correctif consistait à compiler d'abord HUD.java (clic droit sur le fichier-> Compiler HUD.java). Après avoir compilé le fichier java, le reste du projet peut être compilé sans aucun problème.

Je ne sais pas vraiment pourquoi cela a résolu le problème, ni pourquoi IntelliJ ne le ferait pas automatiquement, mais l'erreur racine semble être liée au fait qu'IntelliJ ne gère pas correctement plusieurs classes dans un seul fichier .java.

Joe
la source
1
IntelliJ peut gérer plusieurs classes dans un seul fichier très bien, il a juste besoin d'être sûr que le fichier a été compilé à un moment donné.
Makoto
Ouais, sauf que j'ai juste eu le même problème avec un seul fichier de classe. Curieusement, il avait couru à droite juste bien avant que je courais cette commande Maven: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Il est destiné à déplacer le jar javafx du répertoire libs vers le répertoire ext du JDK actuel. Je l'ai trouvé ici .
nihilon
7

J'ai dû faire un clic droit sur le projet et sélectionner "Réimporter" dans le sous-menu "Exécuter Maven".

bitsmcgee77
la source
5

J'utilise maven dans mon projet. Pour une raison quelconque, IntelliJ me donnait ce genre d'erreurs bizarres. J'ai lancé mvn clean et essayé une resynchronisation et ces erreurs ont disparu.

Moiz Raja
la source
1
clean est un cycle de vie maven. Vous l'utilisez si vous souhaitez nettoyer tous les fichiers de sortie qui ont été créés par le projet maven.
Moiz Raja du
5

Pour moi - j'ai essayé ces étapes (Invalidate Cache & Restart, Maven Reimport)) mais elles n'ont pas fonctionné. Donc , je supprimé le .idea, .settingset le .projectdossier et essayé - il a travaillé.

R11G
la source
3
La suppression du .ideadossier l'a fait pour moi.
Daniel D. le
4

Cela m'est arrivé lorsque j'ai supprimé un dossier, puis je l'ai copié-collé dans le projet.

Right-click project folder -> Rebuild travaillé pour moi.

Tomas Lukac
la source
3

J'ai été confronté au même problème, et il y a beaucoup de solutions données dans la réponse, essayer toutes ces solutions m'a pris un certain temps, alors je voudrais ici proposer une approche méthodique si vous obtenez cette erreur.

Vérifiez les éléments suivants, créez / mettez à jour si quelque chose manque

  1. Le dossier src est marqué comme dossier source
  2. Les fichiers .imls sont présents
  3. Le traitement des annotations est activé
  4. Si vous avez récemment utilisé @UtilityClass, cela peut aussi être la raison, Bug Link

Si tout va bien, vous pouvez essayer les solutions suivantes dans un ordre donné

  1. Recompilez le fichier / module

  2. Si cela ne résout pas le problème, essayez d'actualiser la dépendance maven et de créer le projet en utilisant Maven -> ReimportetBuild -> Rebuild Project

  3. Essayer mvn clean install -DskipTests

  4. Essayez d'invalider le cache IntelliJ et de redémarrer l'EDI en utilisant File > Invalidate caches/ restart

  5. Supprimez le dossier .idea et réimportez le projet

Crédit et Merci à tous ceux qui ont répondu à cette question, vous pouvez vous référer à leurs réponses pour plus de description concernant chaque point.

Deepak Patankar
la source
1
fonctionne: essayez d'invalider le cache IntelliJ et de redémarrer l'EDI, en utilisant Fichier> Invalidate caches / restart
Energy
2

Je sais que c'est une vieille question, mais selon mon expérience récente, cela se produit parce que les ressources de construction sont supprimées ou que Idea ne peut pas les reconnaître comme source.

Partout où l'erreur apparaît, indiquez les sources du dossier / répertoire et cette erreur doit être résolue.

Parfois, même lorsque nous attribuons des sources pour tout le dossier, des classes individuelles peuvent toujours être indisponibles. Pour les utilisateurs novices, une solution simple consiste à importer une nouvelle copie et à reconstruire l'application pour qu'elle soit prête à l'emploi.

Il est conseillé de faire une installation propre après cela.

Mat
la source
2

recompiler la classe principale Application.java l'a fait pour moi, faites un clic droit sur classe> Recompiler

Taranjit Kang
la source
2

Je sais que ce fil est vieux mais, une autre solution était de courir

$ mvn clean install -Dmaven.test.skip=true

Et sur IntelliJ, faites CMD + Shift + A (mac os) -> tapez "Réimporter tous les projets Maven".

Si cela ne fonctionne pas, essayez de forcer le téléchargement des dépendances maven

$ mvn clean -U install -Dmaven.test.skip=true
Edmar
la source
Dans mon cas, il y avait des classes générées automatiquement (basées sur des fichiers XML) auxquelles d'autres parties du code faisaient référence. Alors que la construction avec maven fonctionne, sinon mvn installed, IntelliJ n'a pas vu ces références et a échoué l'environnement d'exécution.
tokosh
2

Pour moi, c'était un problème avec Lombok, car il nécessite l'activation du traitement des annotations. Vous pouvez trouver cette case à cocher surSettings > Build > Compiler > Annotation Processors

RaulDanielPopa
la source
Je vous remercie! Cela a réglé le problème pour moi.
nyarasha le
1

Pour mon cas, le problème était d'utiliser la fonctionnalité expérimentale de Lombok @UtilityClass dans mon projet java dans Intellij Idea, pour annoter une méthode de classe comme "statique". Lorsque j'ai explicitement rendu chaque méthode de la classe "statique" au lieu d'utiliser l'annotation, tous les problèmes de compilation ont disparu.

RAM
la source
0

Puisqu'il s'agit du premier résultat sur Google à la recherche de l'erreur "intelliJ ne trouve pas de symbole", je vais également ajouter ma solution.

Le problème pour moi était que mon projet provenait d'Eclipse et que certains fichiers contenaient des dépendances sur les classes générées dans src/generated-sources par des spécifications dans pom.xml. Pour une raison quelconque, cela n'a pas été correctement exécuté lorsque j'ai ouvert le projet pour la première fois et la reconstruction / réimportation n'a pas aidé, donc les fichiers n'ont jamais été générés.

La solution était de cliquer avec le bouton droit sur le module et de sélectionner Maven -> Generate Sources and Update FoldersCela a résolu le problème et je pourrais compiler.

Araklaj
la source
0

Assurez-vous que le fichier source de la classe java à laquelle vous essayez de vous référer a une .javaextension. C'était.aj dans mon cas (j'ai dû cliquer sur "Créer un aspect" au lieu de "Créer une classe" lors de sa création). IntelliJ affiche la même icône pour ce fichier que pour la classe "normale", mais le compilateur ne la voit pas lors de la construction.

Changer .ajpour le .javaréparer dans mon cas.

fracz
la source
0

Parfois, la classe souhaitée se trouve dans le testrépertoire source. Cela m'est arrivé de toute façon…

Sam Barnum
la source
0

J'avais le même problème sauf que j'importais les classes pour lesquelles les dépendances ne se résolvaient pas d'une manière ou d'une autre. J'ai rafraîchi les projets maven, Rebuild Project. Cela ne s'est toujours pas résolu. On dirait qu'IntelliJ mettait en cache quelque chose de manière incorrecte. J'ai redémarré IntelliJ et cela a résolu les dépendances. Je suppose que cela a effacé le cache en quelque sorte.

MoneeK
la source
0

Si vous utilisez Lombok, assurez-vous d'avoir activé le traitement des annotations.

Muzammil
la source
0

Je vois beaucoup de réponses proposant une construction ou une reconstruction, mais juste au cas où cela ne résoudrait pas votre problème, notez simplement que IDEA peut détecter une méthode mais elle ne se compilera pas au cas où vous auriez un newavant tel qu'il sera attend l'instance.

entrez la description de l'image ici

Carlos López Marí
la source
0

Dans mon cas, j'ai eu un problème pour trouver une classe à partir d'un autre module. Dans pom.xml, je viens d'avoir cette dépendance avec <scope>compile</scope>spécifié. La suppression de cette ligne a aidé.

nikiforovpizza
la source
-1

Je sais que c'est vieux, mais pour n'importe qui d'autre, assurez-vous que la classe qui manque est dans le même package que la classe où vous obtenez l'erreur / d'où vous l'appelez.

Pacha Chestakov
la source
Évalué, car les classes peuvent être importées à partir d'autres packages. En général, la classe cible doit être importée et dans classpath; lors de l'utilisation de Maven, la dépendance doit être définie correctement.
fxnn