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 ???
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>
J'ai eu des problèmes similaires dans Eclipse et le seul moyen de le réparer pour moi était de
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
org.Eclipse.wst.common.project.facet.core.xml
, make backup et supprimez l’entrée du module Web. 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>
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.
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:
Pour moi, il était important de désactiver le module Web dynamique! Modifiez ensuite la version, puis activez à nouveau le module Web dynamique.
Ouvrez les propriétés du projet Eclipse, dans Project Facets, désélectionnez "Dynamic Web Module", ... Cliquez sur OK Maven -> Update project
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.
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.
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>