[Java] il messaggio "impossibile trovare il simbolo" non è di aiuto


Answers

aggiornamento a 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>
Question

Questa è una domanda molto semplice, ed è probabilmente un'impostazione da qualche parte che non conosco, ma Google non è particolarmente utile per questa domanda, fornendo risultati sugli errori di compilazione, non su come modificare i messaggi di errore di compilazione.

Quando costruisco il mio progetto con Maven, mi darà messaggi di errore formattati in modo approssimativo come segue:

[ERRORE] /path/to/source/Main.java:[13,8] errore: impossibile trovare il simbolo

Quando costruisco con ant o javac, in realtà mi dirà il simbolo che non riesce a trovare nel messaggio di errore. Maven mi fornisce un numero di riga e una posizione di carattere, ma visualizzare il simbolo effettivo sarebbe più utile. La riga sopra è l'unica linea data per ciascuno degli errori "Impossibile trovare il simbolo". Non c'è nessuna linea sopra o sotto che dia il simbolo. Immagino ci debba essere un modo per convincere me stesso a dirmi quell'informazione, ma non so cosa sia. Ho provato l'opzione -e, poiché mvn mi ha detto di provare ad usarlo, ma ha dato un traceback per l'errore, non il vero simbolo.

Qualsiasi aiuto?

Ecco l'output di 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"

Ed ecco un esempio di messaggio di errore (inutile), esattamente come output di Maven (solo con le directory abbreviate):

[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] -------------------------------------------------------------

I simboli che non riesce a trovare sono "fakeThing" e "fakeThing2", non SoundEngineFilePanel.




Anche io sto usando Java 7, Maven 2.2.1 e stavo ottenendo lo stesso errore, ho rimosso <scope>tests</scope> dal mio pom e usato

mvn clean -DskipTests=true install per costruire con successo i miei progetti, senza aggiornare la mia versione di Maven.




Questa non è una funzione di Maven; è una funzione del compilatore. Guarda da vicino; le informazioni che stai cercando sono molto probabilmente nella riga seguente.




Stavo riscontrando un problema simile in Eclipse STS durante il tentativo di eseguire un'installazione Maven su un progetto. Avevo cambiato alcune versioni nelle dipendenze del mio file pom.xml per quel progetto e nei progetti a cui queste dipendenze puntavano. L'ho risolto eseguendo un'installazione Maven su tutti i progetti che ho modificato e quindi eseguendo di nuovo l'installazione su quello originale.




SOLUZIONE: @Prima di costruire il tuo componente (usando mvn clean install). Costruisci l'intero progetto una volta e costruisci di nuovo il tuo componente

PERCHÈ COSÌ :
Ottengo questo errore molte volte. La maggior parte delle volte cercherò di costruire il mio componente da solo (dato che non ho apportato modifiche altrove).

Bene, ma quel vaso extra che è stato scaricato di recente potrebbe essere stato influenzato dalle modifiche apportate da una terza parte (all'interno del proprio componente). Fare un'installazione completa con mvn su tutto il progetto mi ha salvato molte volte