Eclipse: Das deklarierte Paket stimmt nicht mit dem erwarteten Paket überein

83

Ich habe ein Problem beim Importieren eines externen Projekts. Ich gehe zu Datei -> Importieren ... -> Vorhandene Projekte in den Arbeitsbereich, wähle den Ordner, in dem sich das Projekt befindet und alles importiert wird - aber die Paketnamen des Projekts scheinen nicht den Erwartungen von Eclipse zu entsprechen. Die Paketnamen haben alle ein Präfix:

prefix.packagename1
prefix.packagename2

etc.

Aber Eclipse erwartet

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

usw., da das Verzeichnis src / prefix1 / prefix / package1 lautet

Ich möchte nicht wirklich mit externem Code herumspielen. Wie kann ich Eclipse anweisen, das Verzeichnis "src / prefix1" zu ignorieren? Oder was kann ich noch tun?

HenryNguyen
quelle
Ich fügte package (name of package under which the file to be ) zu Beginn der Datei hinzu
Sai Ram

Antworten:

102

Gehen Sie einfach in den Erstellungspfad und ändern Sie den Quellpfad in " src/prefix1statt" src.

Es ist möglicherweise am einfachsten, mit der rechten Maustaste auf das srcVerzeichnis zu klicken und "Erstellungspfad / Aus Erstellungspfad entfernen" auszuwählen. Suchen Sie dann das src/prefix1Verzeichnis, klicken Sie mit der rechten Maustaste darauf und wählen Sie "Erstellungspfad / Als Quellordner verwenden".

Jon Skeet
quelle
2
Wie mache ich das rückgängig, was gerade getan wurde? Ich habe auf "Pfad erstellen / Als Quellordner verwenden" geklickt und nichts funktioniert mehr. Bearbeiten: Die Antwort auf meine Frage ist, in "Configure Build Path" zu gehen und das funky Ding von der Liste zu entfernen, die nicht src / oder gen /
ArtOfWarfare
23
Beachten Sie, dass Jons Vorschlag funktioniert, aber möglicherweise einen Neustart von Eclipse erforderlich macht.
Samik R
1
!! Wenn nach dem Ändern des Quellordners immer noch der Fehler angezeigt wird, erstellen Sie das Projekt. Eclipse bringt mich manchmal dazu, etwas zu zerschlagen.
MattC
3
Schließen / Öffnen prj hat bei mir funktioniert ... Eclipse ist ein großes Werkzeug, es kann manchmal Dinge vergessen
niken
Danke Kumpel, tolle Lösung.
Runcorn
67

Ich bin gerade auf dieses Problem gestoßen, und da die Lösung von Herrn Skeet bei mir nicht funktioniert hat, werde ich mitteilen, wie ich dieses Problem gelöst habe.

Es stellt sich heraus, dass ich die Java-Datei unter 'src' geöffnet habe, bevor ich sie als Quellverzeichnis deklariert habe.

Nachdem Sie in Eclipse mit der rechten Maustaste auf das Verzeichnis 'src' geklickt haben, wählen Sie 'Pfad erstellen' und dann 'Als Quellordner verwenden'.

Schließen Sie die bereits geöffnete Java-Datei und öffnen Sie sie erneut (F5-Aktualisierung hat nicht funktioniert).

Vorausgesetzt, der Pfad zur Java-Datei ab "Präfix1" stimmt mit dem Paket in der Datei überein (Beispiel aus der Frage des Anforderers "Präfix1.prefix.packagename2"). Das sollte funktionieren

Eclipse sollte sich nicht länger über 'src' beschweren.

Kyle Shanafelt
quelle
1
Das war's. Ziemlich einfach, hat mich aber für eine Weile festgefahren. Vielen Dank!
Christian Vielma
Nach dem Festlegen des Erstellungspfads war das Schließen und erneute Öffnen der Datei auch für mich erforderlich. Vielen Dank!
ed-
Ja! Hat auch für mich gearbeitet.
Robert Casey
10

Verschieben Sie Ihre Problem * .java-Dateien in einen anderen Ordner.

Klicken Sie auf 'src' und drücken Sie "F5".

Rote Kreuze verschwinden.

Bringen Sie Ihre * .java-Dateien in den "Paketpfad" zurück, klicken Sie auf "src" und drücken Sie "F5".

Alles sollte in Ordnung sein.

Vlad
quelle
2

Wenn Sie ein vorhandenes Projekt importiert haben, entfernen Sie einfach Ihre Quellordner und fügen Sie sie erneut hinzu, um den Pfad zu erstellen und Eclipse neu zu starten. In den meisten Fällen zeigt Eclipse den Fehler bis zum Neustart an.

Parveen Yadav
quelle
1

Passiert für mich, nachdem fehlgeschlagene Builds außerhalb der IDE ausgeführt wurden. Wenn die Reinigung Ihres Arbeitsbereichs nicht funktioniert, versuchen Sie Folgendes: 1) Löschen Sie alle Projekte. 2) Schließen Sie STS / Eclipse und starten Sie es neu. 3) Importieren Sie die Projekte erneut

Bradley D.
quelle
1

Das einzige, was für mich funktioniert hat, ist das Projekt zu löschen und es dann erneut zu importieren. Klappt wunderbar :)

Schlank
quelle
0

Ich bekomme dieses Problem in Eclipse manchmal, wenn ich ein Android-Projekt importiere, das keine .classpath-Datei hat. Die von Eclipse erstellte ist nicht genau die gleiche, die Android erwartet. Da die Android-Klassenpfaddateien normalerweise alle relativ sind, kopiere ich einfach eine korrekte Klassenpfaddatei aus einem anderen Projekt über den falschen Klassenpfad. Ich habe ein Video erstellt, das zeigt, wie ich das mache: https://www.youtube.com/watch?v=IVIhgeahS1Ynto

user3649912
quelle
0

Angenommen, Ihr Projekt hat ein Paket wie package name1.name2.name3.name4 (deklariertes Paket)

Ihr Paket-Explorer zeigt die
oberste Ebene des Pakets mit dem Namen name1.name2 Unterpakete mit dem
Namen name3.name4 an

Es treten Fehler auf, da Eclipse den Paketnamen ab dem Punkt, von dem Sie importieren, aus der Dateiverzeichnisstruktur auf der Festplatte extrahiert.

Mein Fall war etwas komplizierter, vielleicht weil ich einen symbolischen Link zu einem Ordner außerhalb meines Arbeitsbereichs verwendete.

Ich habe zuerst versucht, Build Path.Java Build Path.Source Tab.Link Source Button.Browse zu dem Ordner vor name1 in Ihrem Paket.Folder-Name, wie Sie möchten (ich denke). Hatte aber Probleme.

Dann entfernte ich den Ordner aus dem Erstellungspfad und versuchte es mit Datei> Importieren ...> Allgemein> Dateisystem> Klicken Sie auf Weiter> Aus Verzeichnis> Durchsuchen ... zum Ordner über Name1> Klicken Sie auf die Schaltfläche Erweitert> Aktivieren Sie Links im Arbeitsbereich erstellen> Klicken Sie auf Fertig stellen Taste.

darKoram
quelle
Wahr. In meinem Fall wurde dem Projektnamen ein Postfix hinzugefügt, -2.0.0-SNAPSHOT. Das Präfix entfernt (Projekt umbenennen ..) und alles hat funktioniert.
JRun
0

Gehen Sie zum src-Ordner des Projekts, kopieren Sie den gesamten Code von dort an einen temporären Speicherort und erstellen Sie das Projekt. Kopieren Sie nun den eigentlichen Code vom temporären Speicherort in das Projekt src. Führen Sie den Build erneut aus. Problem wird gelöst.

Hinweis: Dies ist spezifisch für Eclipse.

Deepak Gupta
quelle
0

Ich hatte gerade das gleiche Problem. Die ersten Antworten funktionieren jedoch nicht für mich. Ich schlage eine Lösung vor: Ändern Sie die .classpath- Datei. Beispielsweise können Sie den Pfad des Klassenpfadknotens folgendermaßen definieren : path = "src / prefix1 / java" oder path = " src / prefix1 / resources ". Hoffe es kann helfen.

Jack
quelle
0

Für mich bestand das Problem darin, dass ich ein vorhandenes Projekt in Maven konvertierte, die Ordnerstrukturen gemäß der Dokumentation erstellte und den Hauptordner als Teil des Pakets anzeigte. Ich folgte den Anweisungen ähnlich wie Jon Skeet / JWoodchuck und ging in den Java-Erstellungspfad, entfernte alle fehlerhaften Erstellungspfade und fügte meinen Erstellungspfad hinzu, um auch 'src / main / java' und 'src / test / java' zu sein als Ressourcenordner für jeden, und es löste das Problem.

Douglas Larson
quelle
0

Der Erstellungspfad sollte den Pfad 'bis vor' des Paketnamens enthalten.

Beispiel: Wenn die Ordnerstruktur wie folgt lautet: src/main/java/com/example/dao Wenn sich die Klasse mit der Importanweisung 'package com.example.dao'über den falschen Paketfehler beschwert, sollte der Erstellungspfad include:src/main/java das Problem lösen.

Sobin George
quelle
-1
  1. Klicken Sie mit der rechten Maustaste auf den externen Ordner, der das Paket enthält
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Klicken Sie auf Erstellungspfad -> Aus Erstellungspfad entfernen.

  2. Gehen Sie nun zum Ordnerpräfix1 im Ordnerbereich Ihres Projekts.

  3. Klicken Sie mit der rechten Maustaste darauf -> Pfad erstellen -> Als Quellordner verwenden.

  4. Getan. Der Paketordner zeigt jetzt keinen Fehler an. Wenn es immer noch angezeigt wird, starten Sie das Projekt einfach neu.

Pramod Shetty
quelle