webentwicklung-frage-antwort-db.com.de

Dynamisches Webmodul 3.0 - 3.1

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? 

enter image description here

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>
46
du-it

Ich hatte ähnliche Probleme in Eclipse und der einzige Weg, es für mich zu beheben, war zu lösen 

  • Entfernen Sie das Webmodul
  • Sich bewerben
  • Ändern Sie die Modulversion
  • Fügen Sie das Modul hinzu
  • Konfigurieren (Link zur weiteren Konfiguration am unteren Rand des Dialogs)
  • Sich bewerben

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

  • Beenden Sie Eclipse, wechseln Sie zu Ihrem Projekt im Dateisystem und anschließend zum Ordner .settings. 
  • Öffnen Sie org.Eclipse.wst.common.project.facet.core.xml, make backup und entfernen Sie den Webmodul-Eintrag. 
  • Dort können Sie auch die Version des Webmoduls ändern, jedoch keine Garantien. 
69
dimoniy

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>
61
Alexey Grigorev

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.

9
Nlp Trinh

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:  enter image description here

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. 

3
Dirk Schumacher

Öffnen Sie die Eclipse-Projekteigenschaften. Deaktivieren Sie in Project Facets "Dynamic Web Module". Klicken Sie auf OK Maven -> Projekt aktualisieren

2
CamelTM

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. 

0
Afshin Ghazi

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>  
0
Long Tran