In Java-Projekt in Intellij wird "Symbol kann nicht gefunden" angezeigt

94

Ich rufe eine statische Singleton-Instanz aus der Klasse auf GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javaenthält die HUDKlasse sowie zwei weitere verwandte Klassen HUDTextElementund HUDElement. Alle Klassen befinden sich im selben Stammpfad ../src/org/mypackage.

Wenn ich dieses Java-Projekt in IntelliJ kompiliere, kann ich Symbol HUD jedoch nicht in der Zeile finden, in der ich den HUD.getInstance()Anruf tätige.

Dieser exakt gleiche Code wird in Eclipse problemlos kompiliert. Haben Sie eine Idee, wo das Problem liegt?

Joe
quelle
1
Haben Sie die HUD-Klasse in beide importiert?
Alex Coleman
Dies ist die einzige Lösung für dieses Problem, die bei mir funktioniert
Sahil SInghal

Antworten:

162

Wählen Sie Build-> Rebuild Project, um das Problem zu lösen

Tiboo
quelle
15
Hinweis für vollständige Noobs zu Java / IntelliJ: oben unterscheidet sich von "Build Project"
hiljusti
4
@JustinHill - Ich bin mit Eclipse bestens vertraut und neu bei IntelliJ. Können Sie mir helfen, was den Unterschied zwischen den beiden und den Punkten / Links betrifft, die mir helfen, meine Zeit mit IntellJ zu regeln?
Nanosoft
1
Ich bin wahrscheinlich eine schlechtere Ressource als eine Google-Suche. Ich habe Eclipse nicht verwendet. Mein Kommentar ist nur, dass "Rebuild Project" und "Build Project" verschiedene Optionen sind (ich habe jemandem geholfen, der darauf
gestoßen ist
1
Warum hat das funktioniert? Das Ungültigmachen von Caches und das Neustarten funktionierten nicht einmal.
b15
Arbeitete .... Versuchte "Maven Clean Compile" auszuführen, aber das löste das Problem nicht
Omtara
54

Ich hatte das gleiche Problem und es stellte sich heraus, dass ich das neue Projekt nie vollständig zusammengestellt hatte. Wenn Sie mit der rechten Maustaste klicken und Kompilieren auswählen (Shift-Cmd-F9 auf dem Mac), wurde dies behoben. Es scheint, dass die Kompilierung beim Speichern nicht kompilierte Dateien nicht "sieht".

Das Markieren des src-Ordners als Quelle hat in meinem Fall nicht geholfen.

Sjoerd K.
quelle
44

Ich hatte das gleiche Problem und habe es behoben, indem ich auf Datei> Caches ungültig machen / neu starten geklickt habe

ganninu93
quelle
1
Achtung - wenn Sie Änderungen vornehmen und diese nicht festgeschrieben werden, gehen sie verloren. :)
Nikola
4
Das Ungültigmachen von Caches führt nicht zu verlorenen Änderungen. Ich bin mir nicht mal sicher, wie das funktionieren würde. Wenn Sie eine Datei speichern, wird sie unabhängig vom IntelliJ-Caching oder dem Festschreiben in einem Repository gespeichert.
Christopher Schneider
28

Dies ist wahrscheinlich Ihr Ordner ../src, der in Intellij IDEA nicht als "Quell" -Ordner markiert ist. Daher muss er nicht dort suchen, um Ihre Klasse zu finden. Sie können mit der rechten Maustaste auf den Ordner im Projektexplorer klicken und "Als Quellordner markieren" auswählen, um dies zu beheben.

Paul Sanwald
quelle
1 ist eine Möglichkeit, aber würde 2 ihm nicht einen Fehler geben, der besagt, dass HUD nicht gefunden werden konnte, sondern einen Fehler, der besagt, dass es keine getInstance / update-Methode gibt?
Alex Coleman
Diese Option scheint weg zu sein.
Clankill3r
Nein, es wird in Popup-Optionen umgewandelt: "Verzeichnis als>
markieren
Mein src enthält einen Testordner und mehrere Module. Nachdem ich ihn als Quellstamm markiert habe, ist mein Problem am schlimmsten.
Se Song
Für mich war das fast die richtige Antwort. Mein Quellstamm war bereits markiert, aber ich musste "Als Quellenstamm aufheben" und ihn dann erneut als Quellenstamm markieren, um den Fehler zu beheben.
Yanni
25

Ich habe den gleichen Fehler "Symbol kann nicht gefunden werden" erhalten, als ich dies tat Build -> Make Project. Ich habe dies behoben, indem ich meinen Maven- /targetOrdner gelöscht , mit der rechten Maustaste auf mein Projektmodul geklickt Maven -> Reimportund ausgeführt habe Build -> Rebuild Project. Dies war auf IntelliJ Idea 13.1.5.

Es stellte sich heraus, dass dies der Maven -> ReimportSchlüssel war, da das Problem einige Male wieder auftrat, bevor ich das endlich tat.

Christian Wilkie
quelle
12

Vielen Dank für die bisherige Hilfe. Es stellte sich heraus, dass das Update zuerst HUD.java kompilierte (Rechtsklick auf die Datei-> HUD.java kompilieren). Nach dem Kompilieren der Java-Datei konnte der Rest des Projekts problemlos kompiliert werden.

Ich weiß nicht genau, warum dies behoben wurde oder warum IntelliJ dies nicht automatisch tun würde, aber der Root-Fehler scheint damit zu tun zu haben, dass IntelliJ nicht richtig damit umgeht, mehrere Klassen in einer einzigen Java-Datei zu haben.

Joe
quelle
1
IntelliJ kann mehrere Klassen in einer einzigen Datei problemlos verarbeiten. Es muss lediglich sichergestellt sein, dass die Datei irgendwann kompiliert wurde.
Makoto
Ja, außer dass ich gerade das gleiche Problem mit einer einzelnen Klassendatei hatte. Seltsamerweise lief es einwandfrei, kurz bevor ich diesen Maven-Befehl ausführte : mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Es ist beabsichtigt, das Javafx-JAR aus dem libs-Verzeichnis in das ext-Verzeichnis für das aktuelle JDK zu verschieben. Ich habe es hier gefunden .
Nihilon
6

Ich musste mit der rechten Maustaste auf das Projekt klicken und "Unter importieren" im Untermenü "Run Maven" auswählen.

bitsmcgee77
quelle
5

Ich benutze Maven in meinem Projekt. Aus irgendeinem Grund gab mir IntelliJ solche seltsamen Fehler. Ich habe mvn clean ausgeführt und eine erneute Synchronisierung versucht, und diese Fehler sind verschwunden.

Moiz Raja
quelle
1
sauber ist ein Maven-Lebenszyklus. Sie verwenden es, wenn Sie alle Ausgabedateien bereinigen möchten, die vom Maven-Projekt erstellt wurden.
Moiz Raja
5

Für mich - Ich habe diese Schritte ausprobiert (Cache & Restart ungültig machen, Maven Reimport), aber sie haben nicht funktioniert. Also habe ich den gelöschten .idea, .settingsund .projectOrdner und versuchte - es funktionierte.

R11G
quelle
3
Das Löschen des .ideaOrdners hat es für mich getan.
Daniel D.
4

Dies ist mir passiert, als ich einen Ordner gelöscht und dann wieder in das Projekt eingefügt habe.

Right-click project folder -> Rebuild arbeitete für mich.

Tomas Lukac
quelle
2

Ich weiß, dass dies eine alte Frage ist, aber nach meiner jüngsten Erfahrung geschieht dies, weil die Build-Ressourcen entweder gelöscht werden oder Idea sie nicht als Quelle erkennen kann.

Wenn der Fehler auftritt, geben Sie Quellen für den Ordner / das Verzeichnis an. Dieser Fehler muss behoben werden.

Manchmal sind einzelne Klassen auch dann nicht verfügbar, wenn wir Quellen für den gesamten Ordner zuweisen. Für Anfänger besteht eine einfache Lösung darin, eine neue Kopie zu importieren und die Anwendung erneut zu erstellen, damit sie sofort einsatzbereit ist.

Es ist ratsam, danach eine Neuinstallation durchzuführen.

Matt
quelle
2

Das Neukompilieren der Hauptklasse Application.java hat es für mich erledigt. Klicken Sie mit der rechten Maustaste auf class> Recompile

Taranjit Kang
quelle
2

Ich weiß, dass dieser Thread alt ist, aber eine andere Lösung war zu laufen

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

Und auf IntelliJ machen Sie CMD + Umschalt + A (Mac OS) -> geben Sie "Alle Maven-Projekte erneut importieren" ein.

Wenn dies nicht funktioniert, versuchen Sie, das erneute Herunterladen von Maven-Abhängigkeiten zu erzwingen

$ mvn clean -U install -Dmaven.test.skip=true
edmar
quelle
In meinem Fall gab es automatisch generierte Klassen (basierend auf XML-Dateien), auf die andere Teile des Codes verwiesen. Beim Erstellen mit Maven funktioniert mvn installIntelliJ diese Referenzen nicht und hat die Ausführungsumgebung nicht bestanden.
Tokosh
2

Für mich war ein Problem mit Lombok, da die Anmerkungsverarbeitung aktiviert sein muss. Sie finden dieses Kontrollkästchen unterSettings > Build > Compiler > Annotation Processors

RaulDanielPopa
quelle
Danke dir! Das hat es für mich behoben.
Nyarasha
2

Ich hatte das gleiche Problem, und die Antwort enthält viele Lösungen. Das Ausprobieren all dieser Lösungen hat einige Zeit in Anspruch genommen. Daher möchte ich hier einen methodischen Ansatz vorschlagen, wenn Sie diesen Fehler erhalten.

Überprüfen Sie die folgenden Dinge, erstellen / aktualisieren Sie sie, wenn etwas fehlt

  1. Der src-Ordner wird als Quellordner markiert
  2. .imls-Dateien sind vorhanden
  3. Die Anmerkungsverarbeitung ist aktiviert
  4. Wenn Sie kürzlich @UtilityClass verwendet haben, kann dies auch der Grund sein, Bug Link

Wenn alles in Ordnung ist, können Sie versuchen, die folgenden Lösungen in einer bestimmten Reihenfolge zu finden

  1. Kompilieren Sie die Datei / das Modul neu

  2. Wenn das Problem dadurch nicht behoben wurde, versuchen Sie, die Maven-Abhängigkeit zu melden und das Projekt mit Maven -> Reimportund zu erstellenBuild -> Rebuild Project

  3. Versuchen mvn clean install -DskipTests

  4. Versuchen Sie, den IntelliJ-Cache ungültig zu machen und die IDE mit neu zu starten File > Invalidate caches/ restart

  5. Löschen Sie den Ordner .idea und importieren Sie das Projekt erneut

Vielen Dank an alle, die diese Frage beantwortet haben. Sie können sich auf die Antworten für jeden Punkt beziehen, um weitere Details zu erhalten.

Deepak Patankar
quelle
1
funktioniert: Versuchen Sie, den IntelliJ-Cache ungültig zu machen und die IDE neu zu starten, indem Sie Datei> Caches ungültig machen / neu starten
Energy
1

In meinem Fall bestand das Problem darin, Lomboks experimentelle Funktion @UtilityClass in meinem Java-Projekt in Intellij Idea zu verwenden, um Klassenmethoden als "statisch" zu kommentieren. Als ich jede Methode der Klasse explizit als "statisch" machte, anstatt die Annotation zu verwenden, verschwanden alle Kompilierungsprobleme.

RAM
quelle
0

Da dies der erste Treffer bei Google ist, der nach dem Fehler "IntelliJ kann kein Symbol finden" sucht, werde ich auch meine Lösung einbringen.

Das Problem für mich war, dass mein Projekt von Eclipse stammte und einige Dateien Abhängigkeiten von Klassen enthielten, die src/generated-sourcesdurch Spezifikationen in pom.xml generiert wurden . Aus irgendeinem Grund wurde dies beim ersten Öffnen des Projekts nicht ordnungsgemäß ausgeführt, und das Neuerstellen / erneute Importieren hat nicht geholfen, sodass die Dateien nie generiert wurden.

Die Lösung bestand darin, mit der rechten Maustaste auf das Modul zu klicken und auszuwählen Maven -> Generate Sources and Update Folders. Damit wurde das Problem behoben und ich konnte kompilieren.

Araklaj
quelle
0

Stellen Sie sicher, dass die Quelldatei der Java-Klasse, auf die Sie verweisen möchten, eine .javaErweiterung hat. Es war .ajin meinem Fall (ich muss beim Erstellen "Aspekt erstellen" anstelle von "Klasse erstellen" gedrückt haben). IntelliJ zeigt für diese Datei das gleiche Symbol wie für die "normale" Klasse, aber der Compiler sieht es beim Erstellen nicht.

Ändern, .ajum .javaes in meinem Fall zu beheben.

fracz
quelle
0

Manchmal befindet sich die gewünschte Klasse im testQuellverzeichnis. Ist mir sowieso passiert ...

Sam Barnum
quelle
0

Ich hatte das gleiche Problem, außer dass ich die Klassen importierte, für die Abhängigkeiten nicht irgendwie aufgelöst wurden. Ich habe Maven-Projekte aktualisiert, Projekt neu erstellen. Es wurde immer noch nicht gelöst. Es sieht so aus, als hätte IntelliJ etwas falsch zwischengespeichert. Ich habe IntelliJ neu gestartet und dadurch die Abhängigkeiten behoben. Ich denke, es hat den Cache irgendwie geleert.

MoneeK
quelle
0

Wenn Sie Lombok verwenden, stellen Sie sicher, dass Sie die Anmerkungsverarbeitung aktiviert haben.

Muzammil
quelle
0

Ich sehe viele Antworten, die einen Build oder einen Re-Build vorschlagen, aber nur für den Fall, dass dies Ihr Problem nicht behebt, beachten Sie, dass IDEA eine Methode erkennen kann, diese jedoch nicht kompiliert wird, falls Sie eine vorherige haben, newwie sie sein wird Erwarten der Instanz.

Geben Sie hier die Bildbeschreibung ein

Carlos López Marí
quelle
0

In meinem Fall hatte ich ein Problem beim Finden einer Klasse aus einem anderen Modul. In pom.xmlhatte ich gerade diese Abhängigkeit mit <scope>compile</scope>angegeben. Das Entfernen dieser Zeile hat geholfen.

nikiforovpizza
quelle
-1

Ich weiß, dass dies alt ist, aber für alle anderen stellen Sie sicher, dass sich die fehlende Klasse im selben Paket befindet wie die Klasse, in der Sie den Fehler erhalten / von der Sie ihn aufrufen.

Pascha Schestakow
quelle
Downvoted, da Klassen aus anderen Paketen importiert werden können. Im Allgemeinen muss die Zielklasse importiert werden und sich im Klassenpfad befinden. Bei Verwendung von Maven muss die Abhängigkeit korrekt eingestellt sein.
fxnn