web-dev-qa-db-fra.com

Dynamic Web Module 3.0 - 3.1

J'ai une application Web Spring 3.2.4 configurée à base de code mavenized. Lorsque je construis l’application avec Maven/pom.xml, j’ai reçu une erreur indiquant que web.xml était manquant. J'ai d’abord essayé de créer un fichier web.xml vide. Ce fut le moment où les facettes du projet ont changé (et je ne sais pas pourquoi). Il est passé de dynamique Web Module 3.0 à 3.1, ce qui est irréversible. Comment puis-je le changer à nouveau dans Dynamic Web Modules 3.0 ??? 

enter image description here

De plus, je ne peux pas retirer le JAX-RS. En essayant cela, il en résulte:

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

Plus tard, j'ai découvert que je pouvais éviter l'erreur de compilation Maven en insérant le plugin correspondant dans pom.xml:

<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

J'ai eu des problèmes similaires dans Eclipse et le seul moyen de le réparer pour moi était de 

  • Retirer le module Web
  • Appliquer
  • Changer la version du module
  • Ajouter le module
  • Configurer (lien Autres configurations disponibles en bas de la boîte de dialogue)
  • Appliquer

Assurez-vous simplement de configurer le module Web avant de l'appliquer car, par défaut, il recherchera vos fichiers Web dans/WebContent/et ce n'est pas ce que la structure de projet Maven devrait être.

MODIFIER

Voici un deuxième moyen au cas où rien ne pourrait aider

  • Quittez Eclipse, accédez à votre projet dans le système de fichiers, puis au dossier .settings. 
  • Ouvrez le org.Eclipse.wst.common.project.facet.core.xml, make backup et supprimez l’entrée du module Web. 
  • Vous pouvez également modifier la version du module Web ici, mais là encore, aucune garantie. 
69
dimoniy

Si vous souhaitez utiliser la version 3.1, vous devez utiliser le schéma suivant: 

  • http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

Notez que les versions 3.0 et 3.1 sont différentes: dans la version 3.1, aucune mention de Sun n’a été mentionnée. Il ne suffit donc pas de changer 3_0.xsd en 3_1.xsd

Voici à quoi cela devrait ressembler:

<?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>

Assurez-vous également que vous dépendez des dernières versions de votre pom.xml. C'est, 

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        ...
    </configuration>
</plugin>

et 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

Enfin, vous devriez compiler avec Java 7 ou 8:

<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

J'ai eu le même problème et je l'ai corrigé en modifiant org.Eclipse.wst.common.project.facet.core.xml.

Dans ce fichier, j'ai pu changer la ligne suivante

<installed facet="jst.web" version="3.1"/>

retour à 

<installed facet="jst.web" version="3.0"/>

Cela semblait régler le problème pour moi.

9
Nlp Trinh

Je courais sur Win7, Tomcat7 avec la configuration maven-pom sur Eclipse Mars avec le projet maven activé . Sur un serveur SANS exécution, il me suffisait de passer de la version 3.1 à la version 3.0 sur cet écran:  enter image description here

Pour moi, il était important de désactiver le module Web dynamique! Modifiez ensuite la version, puis activez à nouveau le module Web dynamique. 

3
Dirk Schumacher

Ouvrez les propriétés du projet Eclipse, dans Project Facets, désélectionnez "Dynamic Web Module", ... Cliquez sur OK Maven -> Update project

2
CamelTM

Dans un cas spécifique, le problème est dû à la maven-archetype-webapp qui est publiée pour une webapp dynamique, facettée à la version 2.5 (voir le fichier web.xml et le xsd associé) et liée à Eclipse . Lorsque vous essayez de modifier la facette du projet sur une application Web dynamique> 2.5, la structure du dossier src change syntaxiquement (la version 2.5 est différente de la version 3.1), mais pas physiquement.

C'est pourquoi vous devrez faire face à une exception de pointeur null si vous appliquez les modifications.

Pour le résoudre, vous devez définir la configuration par défaut à partir de la configuration des facettes du projet. Appliquez les modifications, puis dans le chemin de construction Java, vous devez supprimer le dossier/src et créer au moins le dossier/src/main/Java (il est également nécessaire que/src/main/resources et/src/test/Java conforme), modifiez-le de nouveau dans la configuration requise de votre choix (3.0, 3.1), puis appliquez-le.

1

J'ai ouvert le projet org.Eclipse.wst.common.project.facet.core.xml et d'abord modifié puis supprimé la ligne avec la balise de module Web. Projet nettoyé et lancé sur Tomcat à chaque fois, mais il ne fonctionnait toujours pas. Ligne retournée (comme c'était) et projet nettoyé. Paramètres Tomcat ouverts dans Eclipse et projet ajouté manuellement au démarrage de Tomcat (clic droit + Ajouter et supprimer). Cliqué sur le projet et sélectionné Exécuter sur le serveur .... et tout allait bien. 

0
Afshin Ghazi

1) Accédez à votre projet et recherchez le répertoire ".settings" celui-ci
2) Ouvrez le fichier XML nommé:
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>

Changez la version de jst.web en 3.0 et la version de Java en 1.7 ou 1.8 (sur la base de votre version actuelle de jdk)

4) Changez votre fichier web.xml dans le répertoire WEB-INF, veuillez vous référer à cet article:
https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
5) Allez dans le fichier pom.xml et collez ces lignes: 

<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