Eclipse "Diese Kompilierungseinheit befindet sich nicht im Erstellungspfad eines Java-Projekts."

78

Ich kann die automatische Vervollständigung nicht für Eclipse verwenden.

Ich arbeite an dem Projekt auf SVN. Ich habe ein Projekt in Eclipse eingerichtet, indem ich in gegangen bin

Datei -> Importieren -> Als Projekt auschecken -> Assistent für neue Projekte.

Ich wähle Enterprise Java Application und es wird heruntergeladen. Und alles scheint gut zu funktionieren, außer dass die automatische Vervollständigung funktioniert, da ich erwarte, dass ein Popup-Dialogfeld mit der Meldung angezeigt wird

Diese Kompilierungseinheit befindet sich nicht im Erstellungspfad eines Java-Projekts.

Ich habe es gegoogelt, aber jeder sagt, dass das Projekt ein Java-Projekt sein muss. Aber hey das ist es! Worin besteht das Problem?

Aktualisieren

Die Katalogstruktur auf svn sieht folgendermaßen aus:

-Project_name
  -application
     -META-INF
       application.xml
       MANIFEST.MF
  +build
  +db
  +deploy
  +dist
  +lib
  +properties
  +script
  -src
     -META-INF
        someother.xml (datasource info)
        persistence.xml
        folder hierarchy with source files (should be package)
  -web
     some folders
          .
          .
     files
       .
       .
     -WEB-INF
        faces-config.xml
        jboss-web.xml
        web.xml
     build_win.xml

Wie kann ich Eclipse mitteilen, wo sich der Ordner mit den Quelldateien, application.xml und andere XML-Konfigurationsdateien befinden?

l245c4l
quelle
Haben Sie stackoverflow.com/questions/908489/… überprüft ?
VonC

Antworten:

132

Wenn Sie ein Multimodul-Maven-Projekt unter einem übergeordneten Projekt haben, stellen Sie sicher, dass Sie die Datei im übergeordneten Maven-Projekt nicht bearbeiten.

Redochka
quelle
19
Diese Antwort sollte mehr Vorteile haben. In einem Projekt mit verschachtelten untergeordneten Modulen / Projekten zeigt die Eclipse-Navigation und der Paket-Explorer jede untergeordnete Projektdatei unter jedem ihrer aufeinanderfolgenden übergeordneten und auch für sich. Wenn Sie die automatische Vervollständigung bearbeiten möchten und alles andere, was in den anderen obigen Antworten vorgeschlagen wurde, korrekt ist, sollten Sie das untergeordnete Projekt verwenden, das für sich allein (dh nicht unter einem übergeordneten Projekt) im Explorer verwendet wird.
Pete_ch
2
Ich kann nicht verstehen, wie man eine Klasse nur unter einem übergeordneten Projekt bearbeitet? Warum sagst du, dass du das nicht tun sollst? Ich habe ein übergeordnetes Projekt und es gibt Unterprojekte / Module, und ich habe eines davon bearbeitet, bei dem der angegebene Fehler aufgetreten ist.
Samitha Chathuranga
Pathetisch einfach. Sollte als Antwort akzeptiert werden, es sei denn, dieses Problem kann in Nicht-Maven-Projekten auftreten
mister270
+1. Was mir passiert ist, war ich tat ein ctrl + Hund durchsucht Dateien für einen Text . In den Ergebnissen wurde eine Datei angezeigt, daher habe ich darauf geklickt und nicht bemerkt, dass die Datei, in der ich mich befand, über das übergeordnete Modul anstelle des untergeordneten Moduls geöffnet wurde. Ich habe diesen Fehler erhalten, als ich versucht habe, eine class.method einzugeben.
Programmierer
Ich würde hinzufügen, dass das, was Sie in einer solchen Situation sehen werden, dieselbe Datei anscheinend an zwei "verschiedenen" Stellen ist, aber wie die Antwort zeigt, bearbeiten Sie sie unter dem Projekt selbst, nicht unter dem übergeordneten Projekt.
Jeff
17

Was ich getan habe, um eines meiner Projekte richtig auszuchecken, ist von

1) Importieren Sie Ihr Projekt aus svn

      file-->import-->SVN-Checkout Projects From SVN

2) Suchen Sie Ihr Projekt und stellen Sie im Dialogfeld "Auschecken als" sicher, dass das Optionsfeld "Als Projekt auschecken, das mit dem Assistenten für neue Projekte konfiguriert wurde" aktiviert ist.

3) Führen Sie regelmäßige Schritte durch.

Der Assistent ruft das Projekt ordnungsgemäß ab und richtet dann Ihre Sonnenfinsternis ein.

ohne den Zauberer zu benutzen finde ich, dass die Hölle losbricht .....

Hoffe das hilft...

Lenn Dolling
quelle
17

Folgendes fehlte in meiner .project-Datei:

    <projectDescription>
        ...
        <buildSpec>
            <buildCommand>
                <name>org.eclipse.jdt.core.javabuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildspec>
        ...
        ...
        ...
        <natures>
            <nature>org.eclipse.jdt.core.javanature</nature>
            <nature>org.eclipse.m2e.core.maven2Nature</nature>
        </natures>
        ...
    </projectDescription>
Abhinav
quelle
Durch Hinzufügen der jdt.core-Natur zu meiner .project-Datei wurde dies für mich behoben.
Urchin
Nach der obigen Änderung musste ich mit der rechten Maustaste auf das Projekt klicken, Maven auswählen und das Projekt aktualisieren, um die obigen Änderungen zu übernehmen. Dann hat es funktioniert.
Kumar S
10

Ich habe dieses Problem von Zeit zu Zeit und oft liegt es daran, dass das Projekt nicht als Java-Projekt markiert wurde. Sie können dies ändern, indem Sie zu den Eigenschaften für das Projekt> Projektfacetten> gehen und Java auswählen. Möglicherweise müssen Sie das Projekt dann ordnungsgemäß konfigurieren, dies ist jedoch wahrscheinlich Teil des Problems

Adam
quelle
5

Ich hatte auch dieses Problem, nachdem ich mein Java-Projekt in ein Maven-Projekt konvertiert hatte. Ich habe es wie folgt gelöst:

Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Projektfacetten -> klicken Sie auf Java und dann auf Übernehmen.

Erandi
quelle
Ich verwende STS 3.8.2 und importiere ein Projekt nach Ordner. Die Java-Dateien befanden sich in einem einzelnen Unterverzeichnis, nicht am Standardspeicherort src/main/java. Ich bin nicht sicher, ob das das Problem war, aber es gab keine Optionen unter dem Ausführungsmenü. Danke, das hat mir sehr geholfen. Es gab ein paar zusätzliche Schritte. Ich musste Propertiesvorher gehen Project Facets. Es gibt auch eine RuntimesRegisterkarte, auf der ich meine Java-Version auswählen musste.
wsams
4

Hatten Sie Ihre .project-Datei in Ihren Ordnern?

Ich habe das gleiche Problem. Dann wurde mir klar, dass ich die .project-Datei nicht hatte.

JJJ
quelle
14
was hast du dann gemacht
Pete_ch
4

Ich nehme vielleicht die falschen Dinge aus so vielen Kommentaren auf, aber wenn Sie Maven verwenden, führen Sie dann die übliche Eingabeaufforderung zum Erstellen und Bereinigen aus?

Gehen Sie zu cmd und navigieren Sie zu Ihrem Arbeitsbereich (normalerweise c: / workspace). Führen Sie dann "mvn clean install -DskipTests" aus

Führen Sie danach "mvn eclipse: eclipse eclipse: clean" aus (Sie müssen sich keine Gedanken über Rohrleitungen machen).

Haben Sie auch Modulabhängigkeiten in Ihren Projekten?

Wenn ja, entfernen Sie die Abhängigkeiten, indem Sie auf Anwenden klicken und dann die Abhängigkeiten lesen. Da dies Eclipse richtig einstellen kann, wenn es manchmal mit Buildpath verwechselt wird.

Hoffe das hilft!

Tommy Giovanelli
quelle
Sollte es nicht stattdessen "mvn eclipse: clean eclipse: eclipse" sein? Wenn ich Ihren Befehl richtig verstehe, generiert er zuerst das Eclipse-Projekt und entfernt es sofort danach - das sieht nach einem Fehler aus.
Frank Schmitt
2

Ich habe den Klassenpfad und das Projekt aus einem anderen Projekt kopiert und die Werte richtig angepasst.

Schließen Sie das Projekt, bevor Sie diese Dateien bearbeiten. Wenn Sie sicher sind, dass sie die Realität widerspiegeln (Ihre Realität jedenfalls), öffnen Sie das Projekt erneut in Eclipse.

Der Arbeitsbereich wird neu erstellt und alle sollten von da an funktionieren.

Alex
quelle
2

In meinem Fall ist es ein Maven-Projekt

Löschen Sie das Projekt aus Eclipse und lassen Sie die Quellen geschlossen. Eclipse aus Dateisystem löschen

.target / .classpath .project .settings / open eclipse Importieren Sie erneut Maven-Projekte

Dies löste das Problem

Huub
quelle
2

Möglicherweise möchten Sie versuchen, Eclipse mit der Startoption -clean auszuführen. Dabei wird versucht, die Metadaten des Arbeitsbereichs von Eclipse neu zu erstellen.

Rami C.
quelle
2
mvn eclipse:eclipse

löste mein Problem

Renato Vasconcellos
quelle
1

Hier die Schritte zum Erstellen eines Quellordners in Eclipse.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zu Eigenschaften
  2. Wählen Sie im Dialogfeld "Eigenschaften" die Option "Java-Erstellungspfad"
  3. Wählen Sie die Registerkarte Quelle und überprüfen Sie, ob die Quellordner korrekt sind, wenn Sie nicht auf die Schaltfläche Entfernen klicken, um Quellordner zu entfernen, oder auf die Schaltfläche Hinzufügen, um Quellordner hinzuzufügen.

Sie können die Reihenfolge steuern, in der Quellordner in einem Projekt in der Reihenfolge "Reihenfolge" und "Exportieren" in der Option "Erstellungspfad konfigurieren" angezeigt werden.

ams
quelle
1

Hatte das gleiche Problem (aber mit Maven). Der Grund war die falsche Wahl des Executors: Mein Projekt verwendete globale Einstellungen, die bei der Embedded-Installation von Maven nicht verfügbar sind. Es wurde in extern geändert (Fenster -> Einstellungen -> Maven -> Installationen) und das Problem wurde behoben.

laonix
quelle
1

Nachdem ich das Projekt aus svn importiert hatte, löschte ich das Projekt aus dem Arbeitsbereich und importierte es als Maven-Projekt aus dem lokalen Bereich. Dann gab in den Einstellungen-> maven-> usersettings-> im Feld usersettings der Pfad settings.xml an, der sich im Apache maven-Ordner-> conf-> settings.xml befindet

und es löste das Problem für mich.

Mazeen Muhammed
quelle
1

Ihre Quelldateien sollten sich in der Struktur des Paket-Explorers in einer Struktur mit einem 'Paket'-Symbol befinden (im Menü unter Fenster > Ansicht anzeigen > Paket-Explorer oder drücken Sie Ctrl+ 3und geben Sie pack ein ).

Java-Projekt in Eclipse

Ist dies nicht der Fall, wählen Sie den Ordner mit Ihrem Root-Paket aus ( src im obigen Bild) und wählen Sie im Kontextmenü die Option Als Quellordner verwenden (Rechtsklick).

Fabian Steeg
quelle
Aber es ist ein Java Enterprise-Projekt. Wenn ich mit der rechten Maustaste auf einen Ordner klicke, gibt es keine Verwendung als Quellordner.
l245c4l
@ l245c4l: Versuchen Sie es in der Paket-Explorer- Ansicht (meine Antwort wurde bearbeitet, um Details hinzuzufügen).
Fabian Steeg
Nein, es funktioniert auch nicht. Es gibt kein solches Element im Menü. Schauen Sie sich meine Frage noch einmal an, ich habe sie aktualisiert, sodass es jetzt eine SVN-Projektstruktur gibt. Vielen Dank für Ihre Zeit.
l245c4l
0

Befindet sich die Datei, wie in der Nachricht angegeben, irgendwo im Java-Erstellungspfad des Projekts (z. B. ein Quellordner)?

nitind
quelle
0

Hatte das gleiche Problem. Lösung: Kontextmenü -> Maven -> Abhängigkeitsverwaltung aktivieren

Ich weiß nicht, warum das beim Auschecken verloren gegangen ist.

Thomas
quelle
0

Ich habe festgestellt, dass ich diesen Fehler erhalten habe, weil sich meine Dateien, einschließlich meiner Hauptklasse, außerhalb des .src-Ordners befinden.

TheMightyLlama
quelle
0

Für mich hat es funktioniert, das Verzeichnis .settings / aus einem anderen Projekt zu entfernen.

hausen
quelle
0

Führen Sie "mvn eclipse: eclipse" vom Terminal aus.

Puppala Mounika
quelle
2
Während dieser Code die Frage möglicherweise beantwortet, würde die Bereitstellung eines zusätzlichen Kontexts darüber, wie und / oder warum das Problem gelöst wird, den langfristigen Wert der Antwort verbessern. Denken Sie daran, dass Sie in Zukunft die Frage für die Leser beantworten, nicht nur für die Person, die jetzt fragt! Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, und geben Sie an, welche Einschränkungen und Annahmen gelten. Es tut auch nicht weh zu erwähnen, warum diese Antwort angemessener ist als andere.
Dev-iL
0

Wenn Sie ein Anfänger sind (wie ich), ist die Lösung möglicherweise so einfach wie sicherzustellen, dass der übergeordnete Ordner, in dem die Datei, in der Sie arbeiten, ein Java-Projekt ist.

Ich habe den Fehler gemacht, einfach einen Java-Ordner zu erstellen, dann eine Datei im Ordner zu erstellen und zu erwarten, dass sie funktioniert. Die Datei muss in einem Projekt gespeichert sein, wenn Sie diesen Fehler vermeiden möchten.

Ty Hitzeman
quelle
0

Ich hatte das gleiche Problem, nachdem ich ein Maven-Projekt importiert hatte, das aus verschachtelten Mikrodiensten bestand. So habe ich es in Eclipse gelöst:

  1. Klicken Sie mit der rechten Maustaste auf Projekt
  2. Wählen Sie Konfigurieren
  3. Wählen Sie "Verschachtelte Projekte konfigurieren und erkennen".
Muhammad Ahmed
quelle
-1

Wenn beispielsweise 4 Projekte und ein Stammprojekt vorhanden sind, fügen Sie die anderen untergeordneten Projekte hinzu, um den Pfad des Stammprojekts zu erstellen. Wenn der Erstellungspfad nicht ausgewählt ist, fügen Sie der .project-Datei die folgenden Codes hinzu.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>rootProject</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>
Ozturk
quelle
-1
  1. Löschen Sie Ihr Projekt (LÖSCHEN SIE DIE URSPRUNGSDATEI NICHT IM DATEISYSTEM)
  2. Klicken Sie mit der rechten Maustaste auf den Bereich Paket-Explorer und klicken Sie mit der rechten Maustaste auf Importieren.
  3. Gehen Sie zum Maven-Ordner und klicken Sie auf Importieren eines vorhandenen Maven-Projekts.

Ich hoffe es hilft

RobotCharlie
quelle