Eclipse-Erstellungspfad-Verschachtelungsfehler

Lesezeit: 5 Minuten

Benutzer-Avatar
Everarch

Ich arbeite an einer einfachen JSP/Servlet/Tomcat-Webanwendung für meine Klasse. Der Professor hat uns gebeten, eine Ordnerstruktur zu verwenden, die sich geringfügig von der standardmäßigen dynamischen Webprojektstruktur unterscheidet. Anstatt den Ordner webcontent zu verwenden, möchte er unseren gesamten Quellcode unter src/main/java und src/main/webapp.

Wenn ich die App starte, wird meine Willkommensdatei gut angezeigt, aber wenn ich versuche, auf meine Servlets zuzugreifen, bekomme ich:

 Http 500 SEVERE: Allocate exception for servlet InitDb

java.lang.ClassNotFoundException. Ich bin mir ziemlich sicher, dass es ein Build-Pfad-Fehler ist. Ich habe final/src im Erstellungspfad, aber ich erhalte die Warnung

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the    nesting exclude 'main/' from 'final/src'

Geben Sie hier die Bildbeschreibung ein

Ich habe dies in meiner Deployment-Assembly:

<wb-resource deploy-path="https://stackoverflow.com/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

Wenn ich main/ ausschließe, verschwindet die Warnung, aber das Problem wird nicht behoben. Ich würde mich über jeden Rat freuen. Vielen Dank.

Ich hatte das gleiche Problem, auch als ich ein neues Projekt erstellte. Ich habe das Java-Projekt in Eclipse erstellt, es dann mavenisiert und dann die Eigenschaften des Java-Build-Pfads entfernt src/ und hinzufügen src/main/java und src/test/java. Wenn ich das Maven-Update ausführe, gab es früher einen verschachtelten Pfadfehler.
Dann wurde mir endlich klar, weil ich diesen Eintrag vorher nicht gesehen hatte, dass es ein gibt <sourceDirectory>src</sourceDirectory> Zeile in der pom-Datei, die geschrieben wird, wenn ich sie mavenisiere. Es wurde nach dem Entfernen behoben.

  • Dies ist nur einer der vielen zufälligen Tricks. Nicht erklären warum. Also weniger hilfreich.

    – smWikipedia

    17. November 2015 um 3:42 Uhr

  • Ich habe den pom-Eintrag einfach in scr/main/java umbenannt und alles war gut. Danke für den Beitrag acheron55

    – Beezer

    24. Juni 2016 um 8:35 Uhr

  • hast du es dort abgelegt? oder wo kommt das her?

    – Linie

    27. Januar 2019 um 22:39 Uhr

  • Dies <sourceDirectory>src</sourceDirectory> erschien in meiner pom.xml, nachdem ich die JDK-Version der geändert hatte maven-compiler-plugin.

    – Belu

    29. März 2021 um 13:28 Uhr

Benutzer-Avatar
Hihi

Ich wollte eine nicht-mavenische Antwort auf diesen Thread einwerfen.

Aus Gründen der Versionskontrolle und der strengen Verzeichnisstruktur konnte ich Acherons Antwort (der besten Antwort) nicht folgen, etwas Ähnliches wie das Entfernen zu tun src/ und hinzufügen src/main/java und src/test/java zum Baupfad.

Ich hatte tatsächlich ein paar Wochen lang immer wieder mit diesem verschachtelten Build-Pfad-Problem gekämpft. Die Lösung des Problems wird in der Fehlermeldung angedeutet:

To enable the nesting exclude 'main/' from 'final/src'

Fix

In Ihrem Erstellungspfad müssen Sie Ihre bearbeiten Inclusion and Exclusion Patterns durch anklicken Excluded: (None) und dann Edit...:

  1. Gehen Sie zum Navigator und klicken Sie mit der rechten Maustaste auf das Projekt
  2. Pfad erstellen
  3. Baupfad konfigurieren
  4. Quelle (Registerkarte)

Ausschlussmuster

Dort können Sie hinzufügen main/webapp/WEB-INF/classes als ein Exclusion Pattern. Dann sollte es Ihnen erlauben, hinzuzufügen main/webapp/WEB-INF/classes als separater Quellordner in den Erstellungspfad.

  • Gute Antwort . Genau das Problem, mit dem ich konfrontiert war. Upvoted .

    – Der dunkle Ritter

    9. November 2021 um 15:33 Uhr

Benutzer-Avatar
abhijeet104

Hier ist eine einfache Lösung:

  1. Klicken Sie mit der rechten Maustaste auf das Projekt >> Eigenschaften >> Erstellungspfad;
  2. Wählen Sie auf der Registerkarte Quelle alle Quellordner aus;
  3. Entferne sie;
  4. Klicken Sie mit der rechten Maustaste auf das Projekt, Maven >> Aktualisieren Sie das Projekt.

  • Danke, dass du meinen Tag gerettet hast!

    – Benutzer1807337

    26. Oktober 2020 um 20:35 Uhr

  • Dies funktionierte perfekt für mich, ohne dass ich irgendwelche Konfigurationen ändern musste.

    – Michael Skarn

    10. Juni um 16:39 Uhr

Benutzer-Avatar
Sireesh Yarlagadda

Versuche dies:

Auf der Registerkarte „Bibliotheken“:

Eclipse -> right click on project name in sidebar -> configure build path -> Libraries

Entfernen Sie Ihre Web-App-Bibliotheken:

click on "Web App Libraries" -> click "remove"

Fügen Sie sie wieder hinzu:

click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"

Hervorheben von „Web App Libraries“:

Hervorheben von "Web-App-Bibliotheken"

Ich hatte das gleiche Problem und die richtige Antwort oben hat bei mir nicht funktioniert. Was ich tat, um es zu lösen, war zu gehen Build Path->Configure Build Path und unter der Registerkarte “Quelle” habe ich alle Quellen entfernt (die nur eine Quelle hatten) und sie von dort aus neu konfiguriert. Am Ende habe ich das Projekt aus Eclipse entfernt und das Maven-Projekt erneut importiert, um den Fehler zu beheben.

  • Du verdienst die Welt mein Schatz! Ich danke dir sehr. Das war alles über die falsche Maven-Struktur.

    – Matheus Santz

    25. März 2021 um 15:49 Uhr

Benutzer-Avatar
Albciff

In meinem Fall habe ich ein Gradle-Natur-Projekt in Finsternisdas Problem war in a build.gradlewo dies sourceSets angegeben:

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
 }

Damit scheint es gut zu funktionieren intelliJ,aber scheint als Finsternis mag kein Nest src, src/java, src/resources. Im Finsternis Ich muss es ändern in:

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
}

  • Du verdienst die Welt mein Schatz! Ich danke dir sehr. Das war alles über die falsche Maven-Struktur.

    – Matheus Santz

    25. März 2021 um 15:49 Uhr

Benutzer-Avatar
Kristof Jozsa

Sie müssen Ihre Quellen und Ihr Zielverzeichnis trennen, in das die Build-Ausgabe geht. Es ist auch wichtig zu beachten, dass keine Klassendateien jemals im Quellverzeichnis landen können. Dies ist nicht gegen den Rat Ihres Professors – tatsächlich fördert er die Maven-Standardquellstruktur für ./src/main/java und ./src/main/webapp. Der zweite sollte zB halten. die obligatorische WEB-INF/web.xml-Datei, aber Sie werden niemals tatsächliche Klassen dort ablegen.

Was Sie ändern müssen, ist Ihr Zielverzeichnis. Ich schlage vor, die gleichen Standards zu verwenden und dafür den Namen “./target” zu wählen. Alle erstellten Dateien werden hier eingefügt, und das Packen dieser Dateien führt zu einem korrekten bereitstellbaren Artefakt. Sollten Sie später zur Verwendung von Maven migrieren, hilft dies auch dabei, dies auf skriptgesteuerte, wiederholbare Weise zu tun.

Hoffe das klärt dein Problem.

1336580cookie-checkEclipse-Erstellungspfad-Verschachtelungsfehler

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy