it-swarm.com.de

maven "Kann Symbol nicht finden" Nachricht nicht hilfreich

Dies ist eine wirklich einfache Frage, und es ist wahrscheinlich ein Ort, an dem ich nichts weiß, aber Google ist für diese Frage besonders wenig hilfreich, da sie Ergebnisse über Kompilierungsfehler liefert und nicht, wie Kompilierungsfehlernachrichten geändert werden sollen.

Wenn ich mein Projekt mit maven baue, werden mir Fehlermeldungen angezeigt, die ungefähr wie folgt formatiert sind:

[ERROR] /path/to/source/Main.Java:[13,8] Fehler: Symbol kann nicht gefunden werden

Wenn ich mit Ant oder Javac baue, wird mir tatsächlich das Symbol angezeigt, das in der Fehlermeldung nicht gefunden wird. maven gibt mir eine Zeilennummer und eine Zeichenposition, aber das Anzeigen des tatsächlichen Symbols wäre hilfreicher. Die Zeile darüber ist die einzige Zeile, die für jeden Fehler "Symbol nicht gefunden" angegeben wird. Es gibt keine Linie darüber oder darunter, die das Symbol ergibt. Ich kann mir vorstellen, dass es einen Weg geben muss, um mir diese Informationen mitzuteilen, aber ich weiß nicht, was es ist. Ich habe die Option -e ausprobiert, da mvn mir sagte, ich soll es verwenden, aber es gab ein Maven-Traceback für den Fehler, nicht das eigentliche Symbol.

Irgendeine Hilfe?

Hier ist die Ausgabe von mvn --version

Apache Maven 3.0.4 (rNON-CANONICAL_2012-10-24_11-25_mockbuild; 2012-10-24 07:25:04-0400)
Maven home: /usr/share/maven
Java version: 1.7.0_09-icedtea, vendor: Oracle Corporation
Java home: /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.9.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.6.6-1.fc17.x86_64", Arch: "AMD64", family: "unix"

Und hier ist eine (nicht hilfreiche) Beispiel-Fehlermeldung, genau wie von maven ausgegeben (nur bei verkürzten Verzeichnissen):

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /path/to/source/SoundEngineFilePanel.Java:[33,8] error: cannot find symbol
[ERROR]  class SoundEngineFilePanel
/path/to/source/SoundEngineFilePanel.Java:[36,8] error: cannot find symbol
[INFO] 2 errors 
[INFO] -------------------------------------------------------------

Die Symbole, die es nicht finden kann, sind "fakeThing" und "fakeThing2", nicht SoundEngineFilePanel.

63
mattg

Dies ist ein Bug im Maven Compiler Plugin, der sich auf JDK7 bezieht, denke ich. Funktioniert gut mit JDK6.

37

update auf 3.1:

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
</plugin>
34

In meinem Fall lag das Problem in einem Kinderglas, das nicht neu aufgebaut wurde, da ich eine neue Klasse hinzugefügt habe. Pom.xml dieses Kinderglases war nicht mit meiner fehlgeschlagenen pom.xml als Kind-zu-Eltern-Beziehung verbunden (mit <parent>-Tag) . Also baute ich das Kinderglas wieder auf, wonach der Fehler verschwunden war.

6
a.parfenov

Ich hatte das gleiche Problem. Der Grund war, dass ich zwei JAR-Dateien hatte, die nicht durch die Maven-Abhängigkeit hinzugefügt wurden. Wenn ich mvn compile ausgeführt habe, wird in der Konsole der Fehler angezeigt:

Symbol kann nicht gefunden werden, Klasse ... ".

Etwas reparieren:

  1. Entfernen Sie die JAR-Dateien aus dem Erstellungspfad
  2. Zum Build-Pfad hinzufügen
  3. mvn compile ausführen
4
Ajax

In meinem Fall habe ich eine Abhängigkeit als <scope>test</scope> verwendet. Dadurch war die Klasse zur Entwicklungszeit verfügbar, aber zum Zeitpunkt des Kompilierens erhielt ich diese Nachricht.

Ändern Sie den Klassenbereich für <scope>provided</scope>, um das Problem zu lösen.

2
Joabe Lucena

Dies geschieht aufgrund dieses Problems, dh das Umpacken, das Sie in der POM-Datei definiert haben.

Entfernen Sie dies aus der POM-Datei unter dem Plugin Maven. Es wird klappen

<executions>
    <execution>
        <goals>
             <goal>repackage</goal>
        </goals>
    </execution>
</executions>
2
Anto Livish A

Auch wenn ich Java 7, Maven 2.2.1 verwende und den gleichen Fehler erhielt, entfernte ich <scope>tests</scope> von meinem Pom und benutzte es 

mvn clean -DskipTests=true install, um meine Projekte erfolgreich zu erstellen, ohne meine Maven-Version zu aktualisieren.

2
abi1964

Dies ist keine Funktion von Maven; es ist eine Funktion des Compilers. Schau genau; Die Informationen, die Sie suchen, befinden sich höchstwahrscheinlich in der folgenden Zeile.

1
Isaac

Im Allgemeinen wird dieser Fehler angezeigt, wenn sich die Version Ihres Kompilierungscodes von Ihrem geschriebenen Code unterscheidet. Schreiben Sie beispielsweise Code, der auf xxx-1.0.0.jar basiert, dass eine Klasse die Methode A hat, die Methode jedoch in B in xxx-1.1.0.jar geändert wurde. Wenn Sie Code mit xxx-1.1.0.jar kompilieren, wird der Fehler angezeigt.

0
ulysses

wenn Sie von einem anderen Projekt im Arbeitsbereich abhängig sind und diese Projekte nicht ordnungsgemäß erstellt werden, kann ein solcher Fehler auftreten. Versuchen Sie zuerst, solche abhängigen Projekte zu erstellen 

0
Piyush Gharote

Ich vermute, der Compiler beschwert sich über eine ungültige Anmerkung. Ich habe festgestellt, dass Eclipse nicht alle Fehler anzeigt, wie ein Komma am Ende eines Arrays in einer Anmerkung. Aber der Standard javac tut es.

0
asgoth

LÖSUNG: @Bevor Sie Ihre Komponente erstellen (mit mvn clean install). Erstellen Sie das gesamte Projekt einmal und erstellen Sie Ihre Komponente erneut

WARUM SO:
Ich erhalte diesen Fehler oft. Meistens versuche ich, meine Komponente alleine zu bauen (da ich an anderer Stelle keine Änderungen vorgenommen habe). 

Richtig, aber diese zusätzliche Dose, die kürzlich heruntergeladen wurde, könnte von Änderungen betroffen sein, die von Dritten (in ihrer Komponente) vorgenommen wurden. Eine komplette mvn-Neuinstallation für das gesamte Projekt zu machen, hat mich viele Male gerettet

0
Ganesh Srini

Ich hatte das gleiche Problem mit Maven. Es kam vor, dass mein Problem darin bestand, dass Maven Ordner mit unterschiedlichen Fallnamen generierte. Ich erwartete eine .service.MyFile-Datei, aber im Zielordner befand sich Service/MyFile, und Java ist case sensitive. Ich habe ein paar Stunden gebraucht, um das herauszufinden.

0

Ich habe ein ähnliches Problem in Eclipse STS erhalten, als ich versuchte, eine Maven-Installation in einem Projekt auszuführen. Ich hatte einige Versionen in den Abhängigkeiten meiner pom.xml-Datei für dieses Projekt und in den Projekten geändert, auf die diese Abhängigkeiten verwiesen haben. Ich habe das Problem gelöst, indem ich bei allen von mir geänderten Projekten eine Maven-Installation durchführte und anschließend die ursprüngliche Installation erneut installierte.

0
anthony stoico

Vielleicht sollten Sie die Eigenschaften von IDE prüfen, bei denen die Groß-/Kleinschreibung beachtet wird. Ich hatte das gleiche Problem und löste es, indem Idea die Groß- und Kleinschreibung anzeigte (für mein Dateisystem ist die Groß- und Kleinschreibung zu beachten): https: // confluence.jetbrains.com/display/IDEADEV/Filesystem+Case-Sensitivity+Mismatch

0