Ottenere "impossibile trovare il simbolo" nel progetto Java in Intellij


96

Faccio questa chiamata a un'istanza singleton statica dalla classe GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javacontiene la HUDclasse così come altre due classi correlate HUDTextElemente HUDElement. Tutte le classi si trovano nello stesso percorso di root ../src/org/mypackage.

Tuttavia, durante la compilazione di questo progetto java in IntelliJ non riesco a trovare il simbolo HUD sulla linea in cui effettuo la HUD.getInstance()chiamata.

Questo identico codice si compila perfettamente in eclipse, hai idea di quale sia il problema?


1
Hai la classe HUD importata in entrambi?
Alex Coleman

questa è l'unica soluzione per questo problema, che ha lavorato per me stackoverflow.com/a/56473166/8660553
Sahil Singhal

Risposte:


167

Seleziona Build-> Rebuild Project lo risolverà


17
Nota per i principianti completi di Java / IntelliJ: sopra è diverso da "Build Project"
hiljusti

4
@JustinHill - Sono esperto di eclipse e nuovo di IntelliJ. Puoi aiutarmi con rispetto a qual è la differenza tra i due e tutti i punti / collegamenti che mi aiutano a sistemare il mio tempo con IntellJ.
nanosoft

1
Probabilmente sono una risorsa peggiore di una ricerca su Google, non ho usato Eclipse. Il mio commento è solo che "Rebuild Project" e "Build Project" sono opzioni diverse (stavo aiutando qualcuno che si è imbattuto in questo e non ha notato la differenza tra le opzioni)
hiljusti

1
Perché ha funzionato? Invalidare le cache e riavviare non ha nemmeno funzionato.
b15

Ha funzionato ... Ho provato a eseguire "maven clean compile" ma il problema non è stato risolto
Omtara

54

Ho avuto lo stesso problema e risulta che non avevo mai compilato completamente il nuovo progetto. Quindi facendo clic con il pulsante destro del mouse e selezionando Compila '' (shift-cmd-F9 su mac) è stato risolto. Sembra che la compilazione al salvataggio non "veda" i file non compilati.

Contrassegnare la cartella src come fonte non ha aiutato nel mio caso.


44

Ho avuto lo stesso problema e l'ho risolto facendo clic su File> Invalida cache / riavvia


1
Attenzione : se ti capita di avere delle modifiche e non vengono applicate, andranno perse. :)
Nikola

4
L'invalidazione delle cache non comporta la perdita delle modifiche. Non sono nemmeno sicuro di come funzionerebbe. Se si salva un file, viene salvato, indipendentemente dalla memorizzazione nella cache di IntelliJ o dal commit in un repository.
Christopher Schneider

29

È probabile che la tua cartella ../src non sia contrassegnata come una cartella "sorgente" in Intellij IDEA, quindi non sa cercare lì per trovare la tua classe. Puoi fare clic con il pulsante destro del mouse sulla cartella in Esplora progetto e scegliere "contrassegna come cartella di origine" per risolvere il problema.


1 è una possibilità, ma 2 non gli darebbe un errore dicendo che non è riuscito a trovare l'HUD, ma piuttosto un errore dicendo che non ha il metodo getInstance / update?
Alex Coleman

questa opzione sembra essere andata.
clankill3r

No, si trasforma in opzioni popup: "Mark Directory As>"
Dracontis

Il mio src contiene la cartella di test all'interno e multi moduli, dopo averlo contrassegnato come Source Root il mio problema è peggiore.
Se Song

Per me questo era vicino alla risposta giusta. La mia root di origine era già contrassegnata, ma ho dovuto "Unmark as Sources Root" e quindi contrassegnarla di nuovo come root di Sources per correggere l'errore.
yanni

26

Ho ricevuto lo stesso errore "Impossibile trovare il simbolo" quando l'ho fatto Build -> Make Project. Ho risolto questo problema eliminando la mia /targetcartella Maven , facendo clic con il pulsante destro del mouse sul modulo del progetto e facendo Maven -> Reimport, e facendo Build -> Rebuild Project. Questo era su IntelliJ Idea 13.1.5.

Si scopre che la Maven -> Reimportchiave era, dal momento che il problema è riemerso alcune volte prima che finalmente lo facessi.


12

Grazie per l'aiuto finora, si scopre che la soluzione era compilare prima HUD.java (fare clic con il tasto destro sul file-> Compila HUD.java). Dopo aver compilato il file java, il resto del progetto potrebbe essere compilato senza problemi.

Non so davvero perché questo lo abbia risolto, o perché IntelliJ non lo avrebbe fatto automaticamente, ma l'errore di root sembra che abbia a che fare con IntelliJ che non gestisce correttamente la presenza di più classi in un singolo file .java.


1
IntelliJ può gestire più classi in un singolo file, deve solo essere sicuro che il file sia stato compilato a un certo punto.
Makoto

Sì, tranne per il fatto che ho avuto lo stesso problema con un singolo file di classe. Stranamente, era stato in esecuzione bene a destra prima ho eseguito questo comando Maven: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Ha lo scopo di spostare il jar javafx dalla directory libs alla directory ext per il JDK corrente. L'ho trovato qui .
nihilon

7

Ho dovuto fare clic con il pulsante destro del mouse sul progetto e selezionare "Reimport" nel sottomenu "Esegui Maven".


5

Uso Maven nel mio progetto. Per qualche ragione IntelliJ mi dava questo tipo di strani errori. Ho eseguito mvn pulito e ho provato una risincronizzazione e questi errori sono scomparsi.


1
clean è un ciclo di vita esperto. Lo usi se vuoi ripulire tutti i file di output che sono stati creati dal progetto maven.
Moiz Raja,

5

Per me: ho provato questi passaggi (Invalidate Cache & Restart, Maven Reimport)) ma non hanno funzionato. Così ho cancellato il .idea, .settingse .projectcartelle e provato - ha funzionato.


3
L'eliminazione della .ideacartella l'ha fatto per me.
Daniel D.

4

Questo è successo a me quando ho eliminato una cartella e poi l'ho copiata e incollata di nuovo nel progetto.

Right-click project folder -> Rebuild ha funzionato per me.


3

Ho affrontato lo stesso problema e ci sono molte soluzioni fornite nella risposta, provare tutte queste soluzioni mi ha richiesto un po 'di tempo, quindi qui vorrei proporre un approccio metodico se ottieni questo errore.

Controlla le seguenti cose, crea / aggiorna se manca qualcosa

  1. La cartella src è contrassegnata come cartella di origine
  2. Sono presenti file .imls
  3. L'elaborazione delle annotazioni è abilitata
  4. Se di recente hai utilizzato @UtilityClass, questo può anche essere il motivo, Bug Link

Se tutto va bene, puoi provare a seguire le soluzioni in un dato ordine

  1. Ricompila il file / modulo

  2. Se ciò non risolve il problema, prova ad aggiornare la dipendenza Maven e a costruire il progetto usando Maven -> ReimporteBuild -> Rebuild Project

  3. Provare mvn clean install -DskipTests

  4. Prova a invalidare la cache di IntelliJ e a riavviare l'IDE, usando File > Invalidate caches/ restart

  5. Elimina la cartella .idea e reimportare il progetto

Credito e grazie a tutti coloro che hanno risposto a questa domanda, puoi fare riferimento alle loro risposte per una descrizione più dettagliata di ogni punto.


1
funziona: prova a invalidare la cache di IntelliJ e a riavviare l'IDE, utilizzando File> Invalidate caches / restart
Energy

2

So che questa è una vecchia domanda, ma secondo la mia recente esperienza, ciò accade perché le risorse di build vengono eliminate o Idea non può riconoscerle come fonte.

Ovunque venga visualizzato l'errore, fornire le fonti per la cartella / directory e questo errore deve essere risolto.

A volte, anche quando assegniamo le fonti per l'intera cartella, le singole classi potrebbero non essere ancora disponibili. Per gli utenti inesperti, la soluzione semplice è importare una nuova copia e ricostruire l'applicazione in modo che sia pronta.

Si consiglia di eseguire un'installazione pulita dopo questo.


2

la ricompilazione della classe principale Application.java l'ha fatto per me, fare clic con il tasto destro su classe> Ricompila


2

So che questo thread è vecchio ma un'altra soluzione era eseguire

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

E su IntelliJ fai CMD + Shift + A (mac os) -> digita "Reimport all Maven projects".

Se non funziona, prova a forzare il nuovo download delle dipendenze di Maven

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

Nel mio caso c'erano classi generate automaticamente (basate su file XML) a cui facevano riferimento altre parti del codice. Durante la costruzione con opere Maven, se non edificate mvn install, IntelliJ non ha visto quei riferimenti e ha fallito l'ambiente di esecuzione.
tokosh

2

Per me è stato un problema con Lombok, perché richiede l'abilitazione dell'elaborazione delle annotazioni. Puoi trovare questa casella di controlloSettings > Build > Compiler > Annotation Processors


Grazie! Questo ha risolto il problema per me.
nyarasha

1

Nel mio caso, il problema riguardava l'utilizzo della funzione sperimentale di Lombok @UtilityClass nel mio progetto java in Intellij Idea, per annotare i metodi di una classe come "statici". Quando ho reso esplicitamente ogni metodo della classe come "statico" invece di utilizzare l'annotazione, tutti i problemi di compilazione sono scomparsi.


0

Poiché questo è il primo risultato su Google che cerca l'errore "intelliJ non riesce a trovare il simbolo", inserirò anche la mia soluzione.

Il problema per me era che il mio progetto proveniva da Eclipse e alcuni file contenevano dipendenze da classi generate src/generated-sourcesdalle specifiche in pom.xml. Per qualche ragione, questo non è stato eseguito correttamente quando ho aperto il progetto per la prima volta e la ricostruzione / reimportazione non ha aiutato, quindi i file non sono mai stati generati.

La soluzione era fare clic con il pulsante destro del mouse sul modulo e selezionare Maven -> Generate Sources and Update FoldersQuesto ha risolto il problema e ho potuto compilare.


0

Assicurati che il file sorgente della classe java a cui stai cercando di fare riferimento abbia .javaun'estensione. Era .ajnel mio caso (devo aver premuto "Crea aspetto" invece di "Crea classe" durante la creazione). IntelliJ mostra la stessa icona per questo file come per la classe "normale", ma il compilatore non la vede durante la compilazione.

Cambiando .ajper .javarisolverlo nel mio caso.


0

A volte la classe che desideri si trova nella testdirectory dei sorgenti. Comunque è successo a me ...


0

Avevo lo stesso problema tranne che stavo importando le classi per le quali le dipendenze non si risolvevano in qualche modo. Ho aggiornato i progetti Maven, Rebuild Project. Ancora non si è risolto. Sembra che IntelliJ stesse memorizzando qualcosa nella cache in modo errato. Ho riavviato IntelliJ e questo ha risolto le dipendenze. Immagino che abbia cancellato la cache in qualche modo.


0

Se stai usando Lombok, assicurati di aver abilitato l'elaborazione delle annotazioni.


0

Vedo molte risposte che propongono una build o una ricostruzione, ma nel caso in cui ciò non risolva il tuo problema, nota che IDEA può rilevare un metodo ma non si compilerà nel caso in cui tu abbia una newprima come sarà aspettando l'istanza.

inserisci qui la descrizione dell'immagine


0

Nel mio caso, ho avuto problemi a trovare una classe da un altro modulo. In pom.xml, ho appena avuto questa dipendenza con <scope>compile</scope>specificato. La rimozione di questa linea ha aiutato.


-1

So che questo è vecchio, ma per chiunque altro, assicurati che la classe mancante si trovi nello stesso pacchetto della classe in cui ottieni l'errore / da dove lo stai chiamando.


Downvoted, poiché le classi possono essere importate da altri pacchetti. In genere, la classe di destinazione deve essere importata e in classpath; quando si utilizza Maven, la dipendenza deve essere impostata correttamente.
fxnn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.