Ich habe eine mavenized codebasierte Spring 3.2.4-Web-App. Wenn ich die App mit Maven/pom.xml erstelle, erhalte ich eine Fehlermeldung, dass web.xml fehlt. Zuerst habe ich versucht, eine leere web.xml zu erstellen. Dies war der Moment, als sich die Facetten des Projekts veränderten (und ich weiß nicht warum). Es wurde von Dynamic Web Module 3.0 auf 3.1 umgestellt und dies ist nicht umkehrbar. Wie kann ich es wieder in Dynamic Web Modules 3.0 ändern?
Außerdem kann ich den JAX-RS nicht entfernen. Dies zu versuchen führt zu:
Failed while uninstalling JAX-RS (REST Web Services) 1.0.
org.Eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.Eclipse.jst.j2ee.webapplication.WebApp
Später fand ich heraus, dass ich den Maven-Kompilierungsfehler vermeiden kann, indem Sie das entsprechende Plugin in pom.xml einfügen:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
Ich hatte ähnliche Probleme in Eclipse und der einzige Weg, es für mich zu beheben, war zu lösen
Stellen Sie nur sicher, dass Sie das Webmodul konfigurieren, bevor Sie es anwenden, da es standardmäßig in/WebContent/nach Ihren Webdateien sucht. Dies sollte nicht die Maven-Projektstruktur sein.
EDIT:
Hier ist ein zweiter Weg, falls nichts anderes hilft
org.Eclipse.wst.common.project.facet.core.xml
, make backup und entfernen Sie den Webmodul-Eintrag. Wenn Sie Version 3.1 verwenden möchten, müssen Sie das folgende Schema verwenden:
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
Beachten Sie, dass sich 3.0 und 3.1 unterscheiden: In 3.1 wird kein Sun erwähnt, daher funktioniert das Ändern von 3_0.xsd
in 3_1.xsd
nicht.
So sollte es aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
</web-app>
Stellen Sie außerdem sicher, dass Sie auf die neuesten Versionen in Ihrem pom.xml
angewiesen sind. Das ist,
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
...
</configuration>
</plugin>
und
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
Schließlich sollten Sie mit Java 7 oder 8 kompilieren:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
Ich hatte das gleiche Problem und behebte dieses Problem durch Bearbeiten von org.Eclipse.wst.common.project.facet.core.xml.
In dieser Datei konnte ich die folgende Zeile ändern
<installed facet="jst.web" version="3.1"/>
zurück zu
<installed facet="jst.web" version="3.0"/>
Das schien das Problem für mich zu lösen.
Ich lief unter Win7, Tomcat7 mit Maven-Pom-Setup auf Eclipse Mars mit aktiviertem Maven-Projekt .. Auf einem NICHT laufenden Server musste ich auf diesem Bildschirm nur von 3.1 auf 3.0 wechseln:
Für mich war es wichtig, dass Dynamic Web Module deaktiviert ist! Ändern Sie dann die Version und aktivieren Sie das Dynamic Web Module erneut.
Öffnen Sie die Eclipse-Projekteigenschaften. Deaktivieren Sie in Project Facets "Dynamic Web Module". Klicken Sie auf OK Maven -> Projekt aktualisieren
In einem bestimmten Fall liegt das Problem an der Maven-Archetype-Webapp, die für eine dynamische Webapp veröffentlicht wird, die sich an Version 2.5 (siehe die erzeugte web.xml und die zugehörige Xsd-Datei) orientiert und auf Eclipse ..__ bezogen ist. Wenn Sie versuchen, die Projektfacette in Dynamic Webapp> 2.5 zu ändern, ändert sich die Struktur des SRC-Ordners syntaktisch (die Version 2.5 unterscheidet sich von Version 3.1), jedoch nicht fisikal.
Aus diesem Grund werden Sie mit einer Nullzeiger-Ausnahme konfrontiert, wenn Sie die Änderungen anwenden.
Um dies zu lösen, müssen Sie in der Projektfacettenkonfiguration die Standardkonfiguration festlegen. Übernehmen Sie die Änderungen und gehen Sie dann in den Java-Build-Pfad. Entfernen Sie den Ordner/src und erstellen Sie mindestens den Ordner/src/main/Java (dies ist auch für/src/main/resources und/src/test/Java erforderlich passen Sie die gewünschte Konfiguration erneut an (3.0, 3.1) und übernehmen Sie sie.
Ich öffnete das Projekt org.Eclipse.wst.common.project.facet.core.xml und änderte zunächst die Zeile mit dem Web-Modul-Tag. Projekt wurde gesäubert und jedes Mal auf Tomcat gestartet, aber es wurde immer noch nicht ausgeführt. Zurückgegebene Linie (wie es war) und gereinigtes Projekt. Tomcat-Einstellungen in Eclipse geöffnet und Projekt manuell zum Start von Tomcat hinzugefügt (Rechtsklick + Hinzufügen und Entfernen). Klicken Sie auf Projekt und wählen Sie Auf Server ausführen .... und alles war in Ordnung.
1) Gehen Sie zu Ihrem Projekt und suchen Sie das Verzeichnis ".settings" dieses
2) Öffnen Sie die Datei xml mit dem Namen:
org.Eclipse.wst.common.project.facet.core.xml
3)
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="Java" version="1.5"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
Ändern Sie die jst.web-Version auf 3.0 und die Java-Version auf 1.7 oder 1.8 (Basis auf der aktuellen Version, die die jdk-Version verwendet).
4) Ändern Sie Ihre web.xml
-Datei im WEB-INF
-Verzeichnis. Weitere Informationen finden Sie in diesem Artikel:
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
5) Gehen Sie zur pom.xml
-Datei und fügen Sie diese Zeilen ein:
<build>
<finalName>YOUR_PROJECT_NAME</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source> THIS IS YOUR USING JDK's VERSION
<target>1.8</target> SAME AS ABOVE
</configuration>
</plugin>
</plugins>
</build>