Intellij Impossibile risolvere il simbolo durante l'importazione


127

Questo problema si verifica in modo intermittente per diverse librerie e diversi progetti. Quando si tenta di importare una libreria, il pacchetto verrà riconosciuto, ma il nome della classe non può essere risolto.

Se nell'istruzione import, right-click -> Goto -> the package's declarationvedo tutte le classi decompilate visualizzate nel riquadro laterale - comprese quelle di cui ho bisogno - Se provo a completare automaticamente l'istruzione import, noto che la classe di cui ho bisogno non è presente nel cadere in picchiata.

Ho già provato a invalidare le cache, ma non funziona. Non riesco a trovare alcun conflitto di classe - non ci sono altri file jar nel mio classpath con lo stesso nome di pacchetto. Sono in grado di importare questa classe in altri progetti.

Si prega di vedere le schermate:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Qualcuno ha un'idea?


1
Sei sicuro che la libreria sia stata aggiunta al modulo? Potrebbe essere aggiunto come libreria del progetto ma non essere nel percorso di classe dei moduli.
mkobit

sì - In Project Structure, la libreria viene aggiunta come dipendenza - In realtà, penso che questo sia un bug in Intellij - Si verifica in modo casuale per diverse librerie / progetti - Ricreare il progetto da zero di solito lo risolve
Asaf Ebgi

Se tutto ciò che è menzionato nella risposta è corretto. chiudi il progetto e reimportalo di nuovo. questo ha risolto questo problema per me.
Hari Krishnan

Risposte:


250

puoi provare a invalidare la cache e riavviare intellij, in molti casi sarà d'aiuto.

File -> Invalidate Caches / Restart


anche il progetto di pulizia ha aiutato
GeRyCh

2
@GeRyCh IMHO, Eclipse cleaning = Intellij Invalidate cache
Gangnus

Non ha funzionato anche per me. La mia JUnit era una "Biblioteca globale". Quando lo rimuovo e aggiungo la distribuzione JUnit5 di IntelliJ, funziona. Quando poi converto nuovamente questa dipendenza in una libreria globale, gli errori ritornano. Sospetto che si tratti di un bug perché la conversione in una libreria di progetti invece funziona bene.
Mark Jeronimus

1
Grazie, questo ha funzionato per me. Ho appena iniziato a usare Intellij e ne sono già così infastidito. Non si può saltare fuori dalle parentesi, è necessario riavviare il programma in modo che si compili correttamente, questo è veramente il Windows di Java IDE.
azureai

3
Ho questo problema almeno una volta al giorno da poche settimane. Mi stressa davvero perché reindicizzare tutto richiede un'eternità.
spyro

38

Le ragioni possono essere molteplici. Nel mio caso si trattava di un problema di origine errato. Le cache non valide non funzionavano insieme ad altre soluzioni.

Controlla le radici dei sorgenti del tuo modulo.

  1. Struttura del progetto ( Ctrl+ Alt+ Shift+ S).

  2. moduli

  3. Seleziona il modulo del tuo problema.

  4. Cambia scheda nella parte superiore della finestra "Fonti".

  5. Rimuovi le radici di origine indesiderate. Tenerne uno e aggiungere src e testare le radici sorgente in questa radice.


1
Non so se questo funziona per alcune persone, ma sembra così, e mi chiedo il motivo: in realtà la tua prossima sincronizzazione Gradle ricreerà tutte le directory dei sorgenti che hai appena rimosso.
Fran Marzoa

16

IntelliJ ha problemi nella risoluzione delle dipendenze. Prova quanto segue:

  1. Fare clic con il tasto destro su pom.xml -> Maven -> Reimport
  2. Di nuovo, fai clic con il pulsante destro del mouse su pom.xml -> Maven -> Genera sorgenti e aggiorna cartelle

12

Controlla le dipendenze del tuo modulo.

  1. Struttura del progetto ( Ctrl+ Alt+ Shift+ S).
  2. moduli
  3. Seleziona il modulo del tuo problema.
  4. Cambia scheda nella parte superiore della finestra "Dipendenze".
  5. Controlla quale libreria è necessaria (forse, devi aggiungere la libreria specificata nella scheda 'librerie') o il modulo è elencato qui e ha il giusto ambito (per lo più 'complile').

12

Esegui questo comando nella console del tuo progetto:

mvn idea:idea

Fatto. Ho avuto questo problema molte volte. Ho provato "Invalidate Cache & Restart" e tutte le altre soluzioni. L'esecuzione di quel comando funziona perfettamente per me. Attualmente sto utilizzando IntelliJ 2019.2, ma questo è accaduto anche nelle versioni precedenti e anche la soluzione ha funzionato.


Btw questo plugin
Maven

11

Ho affrontato un problema simile, il commento di Mike mi ha aiutato a muovermi nella direzione per risolverlo.
Sebbene la libreria richiesta facesse parte del modulo anche nel mio progetto, necessitava di un cambio di ambito. Nella dipendenza del modulo, ho cambiato l' ambito in " Compile " piuttosto che " Test " e ora funziona bene per me.


Compile piuttosto che Test funziona per me. Sai perché?
30

1
Come fai a fare questo? Chi è Mike?
cellepo

8

File -> Invalidate Caches / Restart or rebuilding the project non ha funzionato mi preoccupa.

Ciò che ha funzionato per il mio progetto Gradle era "Aggiorna tutti i progetti Gradle" dalla scheda Gradle nell'angolo in alto a destra di IntelliJ v2017, utilizzando il pulsante contrassegnato in giallo mostrato di seguito:

inserisci qui la descrizione dell'immagine


Questa risposta ha funzionato anche per il mio progetto Maven. Per IntelliJ 2018.3.4 l'icona rimane la stessa (frecce blu che girano) ma il titolo esatto dell'opzione è chiamato "Reimport All Maven Projects". Enorme grande per l'autore, è così sollevante trovare una soluzione corretta per il tuo problema dopo una ricerca di un'ora
TomateFraiche

4

Ho trovato la seguente risposta da @ Josséf-Harush e @ matt-leidholm utile da un altro link

  • nell'editor di IntelliJ, fare clic sulla parola chiave rossa ( Integerad esempio) e premere ALT+ ENTER(o fare clic sull'icona della lampadina)
  • selezionare Setup JDKdal menu delle intenzioni

Menu delle intenzioni di IntelliJ

  • clicca su Configure

Finestra di dialogo di selezione dell'SDK del progetto

  • Nel mio caso, il JDKpercorso non era corretto (puntato su /opt/jdk1.7.0_51invece di /opt/jdk1.7.0_65)

Finestra di dialogo Configura SDK non funzionante

  • fare clic su ...e passare al JDKpercorso corretto

Risolto il problema con la finestra di dialogo Configura SDK

  • cancelliamo la cache

Menu File IntelliJ



3

Fare clic con il tasto destro sul file pom.xml, andare su Maven e fare clic su Reimport. Ho avuto un problema simile e questo ha funzionato per me.


1

Ho provato a invalidare le cache e a riavviare, ma l'unica cosa che ha funzionato per me è stata cancellare completamente la directory .idea, quindi creare un nuovo progetto da zero.


Questa non è davvero una soluzione. L'ho provato ma non influisce sul mio caso.
Tung

1

Ho anche ricevuto questo errore più volte quando provo a creare un nuovo progetto Java.

Di seguito è riportato il passaggio su come ho ottenuto questo stupido problema.

  1. Crea un progetto vuoto e crea una nuova directory src/main/java.
  2. Crea il pacchetto sorgente net.gongmingqm10.sketch.
  3. Usa gradle wrapper, gradle ideaper costruire il materiale gradle per il progetto.
  4. Aggiungi alcune dipendenze nel build.gradlefile e gradle buildreimportare il progetto.
  5. Crea User.javae School.javanel pacchetto esistentenet.gongmingqm10.sketch
  6. Ho ricevuto l'errore durante il tentativo di utilizzare import School in User.java.
  7. Intellij continua a lamentarsi non può risolvere il simbolo durante l'importazione.

Soluzione:

Compilare prima il progetto e contrassegnare main / java come root di origine. Crea una nuova directory con lo stesso nome net.gongmingqm10.sketch. Sposta tutti i file dai vecchi pacchetti problematici al nuovo pacchetto.

Causa ultima:

Albero delle directory del codice sorgente

Come puoi vedere dall'albero. Ho una directory denominata net.gongmingqm10.sketch. Ma ciò di cui abbiamo veramente bisogno è la directory a 3 livelli: net-> gongmingqm10-> sketch

Ma prima di finire di costruire il mio progetto in Intellij, creo una nuova directory denominata net.gongmingqm19.sketch, che mi darà una vera directory con il nome net.gongmingqm10.sketch.

Quando proviamo a importarlo. Ovviamente, come può intellij importare il file nella directory weired con il nome a.b.c.


Grazie amico, questo era il mio problema. edit: elaborating ... Ho copiato da 1 modulo maven a un altro e la copia ha appiattito le directory. mentre Intellij sembrava che avesse tutto in ordine, la mia cartella era in effetti "abc" piuttosto che a> b> c.
Qbert

1

@Anton Dozortsev Sono stato fatto impazzire da un comportamento simile; Ho finito per reinstallare l'IDE un sacco di volte, superando il problema solo dopo aver rimosso l'app IDEA, tutte le cache, le preferenze, ecc.

Ho provato tutti i tipi di passaggi nel frattempo (come riavvii, invalidamenti, eliminazione .ideae *.imlfile e altri).

Si scopre che il problema era dovuto idea.max.intellisense.filesizeall'impostazione di IntelliJ . L'avevo impostato su 100 KB, che era più piccolo della dimensione della mia dipendenza, portando IntelliJ a mostrarlo come sconosciuto, proprio come nel tuo screenshot.

fix:

  1. Fare clic su Guida -> Modifica proprietà personalizzate

  2. Imposta la proprietà su un valore maggiore; il valore predefinito è 2500 KB idea.max.intellisense.filesize=2500


1

Ho avuto lo stesso problema finché non ho notato che la cartella src era contrassegnata come root source invece di java ! Il passaggio al solo java (src / main / java) come root di origine ha risolto il mio problema inserisci qui la descrizione dell'immagine


1

Dopo una lunga ricerca, ho scoperto che una dipendenza era in qualche modo corrotta sulla mia macchina in un progetto Maven. La cosa strana era che la dipendenza funzionava ancora correttamente nel codice java compilato. Tuttavia, quando ho pulito e ricostruito la mia cache delle dipendenze Maven, il problema è scomparso e IntelliJ ha riconosciuto il pacchetto. Puoi farlo eseguendo:

mvn dependency:purge-local-repository

È interessante notare che la fonte del mio problema quindi non era IntelliJ, ma Maven stesso.


1

Prova File-> Sincronizza. Quindi chiudere e riaprire IntelliJ prima di invalidare.

Una volta riavviato. Avrei invalidato ma la sincronizzazione ha cancellato tutto dopo il riavvio.


0

Simple Restart ha funzionato per me.

Suggerirei di provare prima con il riavvio e poi si può scegliere di invalidare la cache.

PS: la pulizia delle cache di sistema comporterà la cancellazione della cronologia locale.


0

Ho avuto un problema simile con il mio progetto Maven importato. In un modulo, non può risolvere il simbolo durante l'importazione per una parte dell'altro modulo (sì, parte di quel modulo può essere risolta).

Ho cambiato la "home directory di Maven" con una versione più recente e ho risolto il problema.

Aggiornamento: valido per 1 ora, torna allo stato non funzionante ...


0

Ho trovato la causa della fonte!

Nel mio caso, aggiungo un file jar che include un file sorgente java, ma penso che il sorgente java sia cattivo, nella libreria delle dipendenze di Intellij Idea aggiunge il sorgente automaticamente, quindi in Editor l'importazione è MALE , SEMPLICEMENTE rimuovi il codice sorgente in " Struttura del progetto "->" Libreria ", funziona per me.


0

Quello che ha fatto per me è stato modificare il file del pacchetto nella cartella .idea poiché ho aggiunto accidentalmente fonti a questa libreria jar e Android non è riuscito a risolverlo eliminando la riga delle fonti come indicato nell'errore della libreria di immagini b / m .

Quindi ricostruire il problema gradle e bam risolto.


0

Ho avuto lo stesso problema e il motivo era un'errata marcatura delle fonti del progetto.

Ho creato manualmente il contenuto principale e non ho notato che la src/main/testcartella era contrassegnata come Sourcesinvece di Tests. Ecco perché le mie lezioni di prova sono stati presume di avere tutte le loro librerie di test ( JUnit, Mockito, ecc) con lo scopo di compilazione, non prova.

Non appena ho contrassegnato src/main/testcome Test e ho ricostruito il modulo, tutti gli errori erano spariti.


0

L'ho avuto di recente mentre cercavo di utilizzare Intellij per lavorare su NiFi, si è scoperto che il problema era che NiFi richiede Maven> = 3.1.0 e la versione con cui avevo verificato (immagino che il mio predefinito) fosse 3.0.5. L'aggiornamento della versione di Maven per il progetto lo ha risolto, quindi in alcuni casi il disallineamento della versione di Maven può essere una cosa da guardare ... Immagino sia abbastanza insolito, ma se arrivi così lontano sul thread probabilmente stai avendo un problema insolito :)


0

Lo stesso problema. Se questi metodi non funzionano. puoi provare a eliminare la libreria dal repository locale di maven e reimportarla in pom.

repository mvn

Finalmente per me va bene.

progetto


0

file-> Project Structure-> Modules, trova il modulo con problemi, fai clic su di esso e scegli la Dependenciesscheda sul lato destro. Fare clic sul segno più verde, provare ad aggiungere il jar o le librerie che causano il problema. Per me va bene.


0

Niente di quello che ho provato sopra ha funzionato per me (non che ho provato tutti i suggerimenti). Il trucco alla fine è stato rinominare la classe: ho appena aggiunto un 2 al nome della classe e al nome del file. Quindi ho risolto manualmente tutti i riferimenti. (Poiché non sono stati riconosciuti, il refactoring non ha modificato i riferimenti automaticamente.)

Una volta che la "versione 2" è stata risolta felicemente ovunque, sono stato quindi in grado di refactoring e rimuovere la 2 dalla classe e dal file, e tutto è stato come dovrebbe essere.


0

nel mio caso la soluzione era aggiungere il progetto come progetto maven, oltre al fatto che ho importato come progetto maven: P

vai su pom.xml -> fai clic con il pulsante destro del mouse -> aggiungi come progetto maven


0

Intelli iDEA causa questi stupidi problemi @ volte. Semplice goto pom.xml, fai clic con il pulsante destro del mouse e fai -> Maven -> Reimport.

Questo dovrebbe risolvere il problema.


0

Per la versione 2020.1.4 Ultimate, ho dovuto fare quanto segue

View -> Maven -> Generate Sources and Update Folders For all Projects

Il problema per me era che le biblioteche non venivano popolate mvn -U clean installdal terminale.

inserisci qui la descrizione dell'immagine


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.