Antworten:
Sie können es auch so machen:
Es wird ein WEB-INF- Ordner in src / main / webapp und eine web.xml darin generiert .
web.xml
Datei. Sie sollten dieses Problem stattdessen in Ihrem Build-Tool (dh Maven) beheben.
Dies ist ein Maven-Fehler. Es heißt, dass es eine web.xml-Datei in Ihrem Projekt erwartet, da es sich um eine Webanwendung handelt, wie durch angegeben <packaging>war</packaging>
. Für neuere Webanwendungen ist eine web.xml-Datei jedoch völlig optional. Maven muss diese Konvention einholen. Fügen Sie dies Ihrem Maven hinzu pom.xml
, damit Maven aufholen kann, und Sie müssen web.xml
Ihrem Projekt kein Nutzloses hinzufügen :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
Dies ist eine bessere Lösung als das Hinzufügen eines leeren web.xml
Produkts, da Ihr Endprodukt auf diese Weise sauber bleibt und Sie lediglich Ihre Build-Parameter ändern.
Für aktuellere Versionen von maven können Sie auch die kürzere Version verwenden:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Interface WebApplicationInitializer
haben, ist diese Antwort der richtige Ansatz. Es ist der vernünftige Weg, um dieses Problem zu lösen - es macht keinen Sinn, das hinzuzufügen, web.xml
nachdem man Schritte unternommen hat, um ohne es zu leben!
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
reicht anstelle der ausführlicheren Plugin-Konfigurationseinstellungen aus.
Wenn Sie bereits web.xml unter / src / main / webapp / WEB-INF haben, aber immer noch die Fehlermeldung "web.xml fehlt und ist auf true gesetzt" erhalten, können Sie überprüfen, ob Sie / src / main / webapp enthalten haben in Ihre Projektquelle.
Hier sind die Schritte, die Sie ausführen können:
(Ich habe dies mit Eclipse Mars überprüft)
Wenn Sie Spring Tool Suite verwenden, wird die Option zum Generieren von Deployment Descriptor Stub unter Java EE Tools verschoben, sodass Sie:
Dadurch wird die Datei web.xml im Ordner src / main / webapp / WEB-INF / erstellt und natürlich der Fehler aus der Datei pom.xml von Maven entfernt.
Ich habe das gleiche Problem. Nach dem Lernen und Googeln habe ich mein Problem gelöst:
Klicken Sie mit der rechten Maustaste auf den Projektordner, gehen Sie zu Java EE Tools
und wählen Sie Generate Deployment Descriptor Stub
. Dies wird web.xml
im Ordner erstellt src/main/webapp/WEB-INF
.
Sie können dies auch tun, was weniger ausführlich ist
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Eclipse erkennt ein falsches Standardverzeichnis webapp
. Deshalb sollten wir es klar durch setzen maven-war-plugin
.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webappDirectory>src/main/webapp</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
Nach dem Speichern dieser Einstellung tritt der Fehler nie mehr auf, wenn er entfernt wird. (Ich kann nicht erklären warum.)
Ich hatte das gleiche Problem, obwohl ich 'src/main/webapp/WEB-INF/'
Ordner mit korrekt hatte web.xml
.
Das Problem verschwand, nachdem ich die Konfiguration (maven-> eclipse) mit der
Maven build..
Ausführung neu erstellt hattemvn eclipse:clean eclipse:eclipse
Und dann habe ich Maven -> Update Project
Plugin-spezifische Optionen hinzugefügt (Eclipse-> Maven).
Ich habe dieses Problem nur in Eclipse festgestellt, in der Maven-Befehlszeile hat alles einwandfrei funktioniert, und meine Datei web.xml war vorhanden. Es war ein ausgereiftes Projekt (bereits in der Produktion eingesetzt), das betroffen war. Mein Problem war an die Eclipse-Metadaten gebunden. Es gab ein Problem mit einer der Dateien in meinem Ordner .settings /, insbesondere wurde org.eclipse.wst.common.component geändert. Ich konnte diese Datei auf die vorherige Version zurücksetzen, wodurch das Problem in meinem Fall behoben wurde.
Beachten Sie, dass Yucis Antwort bei mir nicht funktioniert hat. Als ich versuchte, in den Eclipse-Eigenschaften auf Deployment Assembly zu klicken, wurde die Fehlermeldung "Die aktuell angezeigte Seite enthält ungültige Werte" angezeigt.
Für Projekt mit web.xml vorhanden Projekt -> Eigenschaften -> Bereitstellungsassembly, wo Sie den Ordner src / main / webapp hinzufügen können. Änderungen speichern. Reinigen Sie das Projekt, um loszulegen.
Für Projekt mit nicht vorhandener web.xml Setzen Sie failOnMissingWebXml in pom.xml unter dem Eigenschaftstag auf false.
Mach das:
Klicken Sie mit der rechten Maustaste auf Deployment Descriptor und dann auf Generate Deployment Descriptor Stub.
Es macht keinen Sinn, eine web.xml zu erstellen, die nur von elcipse gewünscht wird, auch wenn dies nicht erforderlich ist. Dies ist der Fall, wenn Sie einen Servlet-Conatiner eingebettet haben oder ohne XML-CFG leben, wie dies bei Spring-Boot der Fall ist. Das Sie nur JavaEE (nutzloses Zeug) in Eclipse auf Projektebene oder global diable
Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
Wählen Sie Ihr Projekt aus und wählen Sie die Option "Deployment Descriptor" und dann "Generate Deployment Descriptor stub".
Der Schritt: Wählen Sie Ihr Projekt aus und wählen Sie die Option "Deployment Descriptor" und dann "Generate Deployment Descriptor stub". Das Problem ist, dass wir nicht immer web.xml benötigen. Daher ist es am besten, false an pom.xml anzuhängen
Klicken Sie mit der rechten Maustaste auf project --> New --> Other --> Standard Deployment Descriptor(web.xml)
Drücken Sie dann Weiter. Es wird ein WEB-INF
Ordner mit einer web.xml
Datei darin erstellt.
Das war's.
Erstellen Sie den Ordner WEB-INF in src / webapp und fügen Sie die Seite web.xml in den Ordner WEB-INF ein
maven-war-plugin
. Dies ist ein implizites Plugin, bei dem der Standardwert für diese Konfigurationseigenschaft true ist. Sie müssen es explizit deklarieren und die Konfigurationseigenschaft auf false setzen. Sehen Sie hier mehr . Oder Sie können eine leere web.xml hinzufügen