Eclipse: il pacchetto dichiarato non corrisponde al pacchetto previsto


86

Ho un problema durante l'importazione di un progetto esterno. Vado su File -> Importa ... -> Progetti esistenti nello spazio di lavoro, scelgo la cartella in cui si trova il progetto e tutto viene importato, ma i nomi dei pacchetti del progetto non sembrano essere quelli che Eclipse si aspetta. I nomi dei pacchetti hanno tutti un prefisso:

prefix.packagename1
prefix.packagename2

eccetera.

Ma Eclipse si aspetta

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

ecc. perché la directory è src / prefix1 / prefix / package1

Non voglio davvero scherzare con il codice esterno. Come faccio a dire a Eclipse di ignorare la directory "src / prefix1"? Oppure cos'altro posso fare?


Ho aggiunto package (name of package under which the file to be ) all'inizio del file
Sai Ram l'

Risposte:


105

Basta andare nel percorso di compilazione e modificare il percorso di origine in modo che sia src/prefix1invece di src.

Potrebbe essere più semplice fare clic con il pulsante destro del mouse sulla srcdirectory e selezionare "Build Path / Remove from build path", quindi trovare la src/prefix1directory, fare clic con il pulsante destro del mouse e selezionare "Build Path / Use as source folder".


2
Come posso annullare tutto ciò che ha appena fatto? Ho cliccato su "Crea percorso / Usa come cartella sorgente" e non funziona più niente. Modifica: la risposta alla mia domanda è entrare in "Configura percorso di costruzione" e rimuovere la cosa funky dall'elenco che non è src / o gen /
ArtOfWarfare

25
Nota che il suggerimento di Jon funziona ma potrebbe essere necessario un riavvio di eclipse.
Samik R

1
!! Se continui a visualizzare l'errore dopo aver modificato la cartella di origine, compila il progetto. Eclipse a volte mi fa venire voglia di rompere qualcosa.
MattC

4
Close / Open prj ha funzionato per me ... Eclipse è un grande strumento, a volte può dimenticare le cose
niken

Grazie amico, ottima soluzione.
Runcorn

71

Mi sono appena imbattuto in questo problema e, poiché la soluzione del signor Skeet non ha funzionato per me, condividerò come ho risolto questo problema.

Si scopre che ho aperto il file java sotto "src" prima di dichiararlo una directory di origine.

Dopo aver fatto clic con il pulsante destro del mouse sulla directory "src" in eclipse, selezionando "percorso di creazione", quindi "Usa come cartella di origine"

Chiudi e riapri il file java già aperto (l'aggiornamento F5 non ha funzionato).

Fornito il percorso del file java da "prefix1" in poi si allinea con il pacchetto nel file (esempio dalla domanda del richiedente prefix1.prefix.packagename2). Questo dovrebbe funzionare

Eclipse non dovrebbe più lamentarsi di "src".


1
Era questo. Abbastanza semplice ma mi ha bloccato per un po '. Grazie!
Christian Vielma

Dopo aver impostato il percorso di compilazione, chiudere e riaprire il file era necessario anche per me. Grazie!
ed-

Sì! Ha funzionato anche per me.
Robert Casey

11

Spostare i file * .java problematici in un'altra cartella.

Fare clic sulla voce "src" e premere "F5".

Le croci rosse scompariranno.

Riporta i tuoi file * .java al "percorso del pacchetto", fai clic sulla voce "src" e premi "F5".

Dovrebbe essere tutto ok.


2

Se hai importato un progetto esistente, rimuovi semplicemente le cartelle di origine e quindi aggiungile di nuovo al percorso di creazione e riavvia eclipse. La maggior parte delle volte eclipse continuerà a mostrare l'errore fino al riavvio.


2

L'unica cosa che ha funzionato per me è stata eliminare il progetto e quindi importarlo di nuovo. Funziona come un fascino :)


1

Succede per me dopo che le build non riuscite vengono eseguite al di fuori dell'IDE. Se la pulizia dell'area di lavoro non funziona, prova: 1) Elimina tutti i progetti 2) Chiudi e riavvia STS / eclipse, 3) Reimportare i progetti


0

A volte ottengo questo problema in Eclipse durante l'importazione di un progetto Android che non dispone di un file .classpath. Quello che Eclipse crea non è esattamente lo stesso che Android si aspetta. Tuttavia, i file .classpath di Android sono generalmente tutti relativi, quindi copio semplicemente un file .classpath corretto da un altro progetto sul .classpath errato. Ho creato un video che mostra come lo faccio: https://www.youtube.com/watch?v=IVIhgeahS1Ynto


0

Supponi che il tuo progetto abbia un pacchetto come package name1.name2.name3.name4 (pacchetto dichiarato)

Il tuo esploratore di pacchetti mostra il
livello superiore del pacchetto denominato name1.name2
sotto i pacchetti denominati name3.name4

Si verificheranno errori perché Eclipse estrae il nome del pacchetto dalla struttura della directory dei file sul disco a partire dal punto da cui si importa.

Il mio caso era un po 'più complicato, forse perché stavo usando un collegamento simbolico a una cartella al di fuori del mio spazio di lavoro.

Ho provato per la prima volta Build Path.Java Build Path.Source Tab.Link Source Button.Sfoglia la cartella prima di name1 nel tuo pacchetto.Folder-name come preferisci (penso). Ma ha avuto problemi.

Quindi ho rimosso la cartella dal percorso di creazione e ho provato File> Importa ...> Generale> File system> fai clic su Avanti> Dalla directory> Sfoglia ... nella cartella sopra il nome1> fai clic sul pulsante Avanzate> seleziona Crea collegamenti nell'area di lavoro> fai clic su Fine pulsante.


Vero. Nel mio caso, il nome del progetto aveva un suffisso aggiunto, -2.0.0-SNAPSHOT. Rimosso quel prefisso (rinomina progetto ..) e tutto ha funzionato.
JRun

0

Vai alla cartella src del progetto e copia tutto il codice da esso in una posizione temporanea e crea il progetto. E ora copia il codice effettivo dalla posizione temporanea al progetto src. Ed esegui di nuovo la build. Il problema verrà risolto.

Nota: questo è specifico per eclipse.


0

Mi è capitato di avere lo stesso problema proprio ora. Tuttavia, le prime risposte non funzionano per me. Propongo una soluzione: cambia il file .classpath. Ad esempio, puoi definire il percorso del nodo classpathentry in questo modo: path = "src / prefix1 / java" o path = " src / prefix1 / resources ". Spero che possa aiutare.


0

Per me il problema era che stavo convertendo un progetto esistente in Maven, creavo le strutture delle cartelle in base alla documentazione e mostrava la cartella "principale" come parte del pacchetto. Ho seguito le istruzioni simili a Jon Skeet / JWoodchuck e sono entrato nel percorso di compilazione Java, ho rimosso tutti i percorsi di compilazione non funzionanti, quindi ho aggiunto il mio percorso di compilazione come 'src / main / java' e 'src / test / java', pure come le cartelle delle risorse per ciascuna e ha risolto il problema.


0

Il percorso di compilazione dovrebbe contenere il percorso "fino a prima" di quello del nome del pacchetto.

Ad esempio, se la struttura della cartella è: src/main/java/com/example/dao Se la classe contenente l'istruzione import si 'package com.example.dao'lamenta dell'errore del pacchetto errato, allora, il percorso di compilazione dovrebbe include:src/main/java Questo dovrebbe risolvere il problema.


-1
  1. Fare clic con il tasto destro sulla cartella esterna che contiene il pacchetto
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Fare clic su Percorso build -> Rimuovi dal percorso build.

  2. Ora vai alla cartella prefix1 nella sezione cartelle del tuo progetto.

  3. Fare clic con il tasto destro su di esso -> Percorso di creazione -> Usa come cartella di origine.

  4. Fatto. La cartella del pacchetto non mostrerà alcun errore ora. Se viene ancora visualizzato, riavvia il progetto.

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.