546 Stimmen

Was bedeutet ein Fehler "Cannot find symbol" oder "Cannot resolve symbol"?

Bitte erläutern Sie das Folgende zu Fehlern wie "Cannot find symbol", "Cannot resolve symbol" oder "Symbol not found" (in Java):

  • Was bedeuten sie?
  • Welche Ursachen können sie haben?
  • Wie geht der Programmierer dabei vor, sie zu beheben?

Diese Frage soll eine umfassende Frage-und-Antwort-Runde zu diesen häufigen Kompilierungsfehlern in Java starten.

0voto

Striker Punkte 311

Für Hinweise, sehen Sie sich den Klassennamen genauer an, der einen Fehler auslöst, und die Zeilennummer, Beispiel:

Kompilierungsfehler
[Fehler] \Anwendungen\xxxxx.java:[44,30] Fehler: Symbol nicht gefunden

Ein weiterer Grund ist eine nicht unterstützte Methode für eine Java-Version, z.B. JDK 7 vs. 8. Überprüfen Sie Ihre %JAVA_HOME% Umgebungsvariable.

0voto

VIPIN KUMAR Punkte 2818

In meinem Fall musste ich die folgenden Operationen durchführen:

  1. Verschieben der Datei context.xml vom Verzeichnis src/java/package in das Verzeichnis Ressourcen (IntelliJ IDE)
  2. Bereinigen des Verzeichnisses Ziel.

0voto

sakra Punkte 57239

Wir haben den Fehler in einem Java-Projekt erhalten, das als Gradle-Multi-Projekt-Build eingerichtet ist. Es stellte sich heraus, dass einem der Unterprojekte das Gradle Java Library Plugin fehlte. Dadurch wurden die Klassendateien des Unterprojekts für andere Projekte im Build nicht sichtbar.

Nachdem das Java Library Plugin auf folgende Weise zum build.gradle des Unterprojekts hinzugefügt wurde, verschwand der Fehler:

plugins {
    ...
    id 'java-library'
}

0voto

Adrian C Punkte 11

Re: 4.4: Ein früheres Build-Problem in Stephen C's excellent answer:

Ich bin auf dieses Szenario gestoßen, als ich eine OSGi-Anwendung entwickelte. Ich hatte ein Java-Projekt A, das von B abhängig war. Beim Builden von B trat der Fehler auf:

Kompilierungsfehler: org.company.projectA.bar.xyz existiert nicht

Aber in Eclipse gab es überhaupt keine Kompilierungsprobleme.

Untersuchung

Als ich in A.jar nachsah, gab es Klassen für org.company.projectA.foo.abc, aber keine für org.company.projectA.bar.xyz.

Der Grund für die fehlenden Klassen war, dass in der A/pom.xml eine Eintragung vorhanden war, um die relevanten Pakete zu exportieren.

    org.apache.felix
    maven-bundle-plugin
    ...

            ....
            org.company.projectA.foo.*

Lösung

Fügen Sie die fehlenden Pakete wie folgt hinzu:

org.company.projectA.foo.*,org.company.projectA.bar.*

Und bauen Sie alles neu.

Jetzt enthält das A.jar alle erwarteten Klassen und alles compiliert.

0voto

Rishi Bansal Punkte 3151

Ich habe den folgenden Fehler bekommen

java: cannot find symbol
  symbol: class __

Um das zu beheben, habe ich versucht, Lombok zu aktivieren, IntelliJ IDEA neu zu starten, usw., aber das Folgende hat bei mir funktioniert.

IntelliJ IDEA Einstellungen Compiler Gemeinsamer Build-Prozess VM-Optionen und setzen Sie es auf

-Djps.track.ap.dependencies=false

Dann führen Sie aus

mvn clean install

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X