web-dev-qa-db-fra.com

Impossible de changer la version de la facette du projet Dynamic Web Module en 2.5

J'ai hérité d'une application Web Java d'une autre société. J'essaie de le charger dans Eclipse (via Import Maven Project) et d'obtenir une erreur indiquant "Impossible de modifier la version de la facette du projet Dynamic Web Module en version 2.5".

J'ai fouillé un peu, et l'une des choses que je constate est que le fichier web.xml commence par 

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:web="http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

et le pom.xml spécifie une dépendance de 

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

mais le dossier .settings contient un fichier avec cette

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="Java" version="1.6"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>

et je soupçonne que le 3.0 spécifié ici est en conflit avec le 2.5 spécifié ailleurs. Est-ce que cela sera probablement le cas? Existe-t-il un moyen que cette combinaison de paramètres NE puisse PAS entraîner d’erreurs? (Ancienne version d'Eclipse, par exemple?)

32
joelt

version courte

Essaye ça:

  • Désélectionnez le module Web dynamique dans les facettes de votre projet .Cliquez avec le bouton droit de la souris sur Projet -> Préférences -> Facettes de projet.
  • Ensuite, exécutez à nouveau Maven -> Update Project.

Version longue

J'ai eu ce problème à plusieurs reprises lors de l'apprentissage de contenus Web/spring dynamiques Eclipse et aucune des autres solutions n'a résolu mon problème de manière fiable ou ne m'a pas aidé à comprendre ce qui le causait. Je pense que je commence à.

Il semble donc que lorsque vous exécutez un fichier Maven -> Update Project, m2e (je suppose) ajoute le module Web dynamique aux facettes du projet. L'ajout est le mot clé ici. Donc, quand je suis entré et que j'ai mis à jour web.xml À partir de [...] http://Java.Sun.com/xml/ns/javaee/web-app_2_3.xsd "version = "2.3"> À [...] http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd "version =" 2.5 ">

J'ai eu l'erreur "Impossible de changer la version de la facette du projet Dynamic Web Module en 2.5."

Même chose pour la version 3.0 lorsque j'ai essayé cela.

Il semble que m2e soit capable d’ajouter cela à votre projet, mais comme l’erreur dit, il est incapable de le changer une fois qu’il est défini. Il suffit donc de la désélectionner dans la page des facettes du projet. Hit O.K. pour enregistrer vos préférences et réexécutez Maven Update.

Eclipse Project Facets Dynamic Web Module

Vous ne devriez pas avoir besoin d'inclure javax.servlet dans votre pom.xml si vous avez une facette serveur (comme Tomcat) ajoutée.

Servlet-Api included in libraries

99
TheSporkboy

Voir Impossible de changer la version de la facette du projet Dynamic Web Module en 3.0?

Fermez le projet et mettez à jour directement le fichier 'org.Eclipse.wst.common.project.facet.core.xml' situé dans le dossier .settings du projet.

13
JackDev

Je suppose que les auteurs d'origine ont modifié manuellement les facettes du projet Eclipse après l'importation initiale et n'ont jamais été exécutés Maven | Mise à jour après cela.

Quoi qu'il en soit, pour les projets Maven, il est judicieux de ne pas confier de métadonnées Eclipse (c.-à-d. .classpath, .project, .settings/) à SCM et de laisser M2E les générer à l'importation.

Je vous recommande donc de copier la structure de votre projet, de supprimer toutes les métadonnées Eclipse de la copie, puis de les importer via m2e.

S'il y a encore des erreurs lors de l'importation, vous obtiendrez au moins un indice quant au fait que les auteurs d'origine ont modifié les valeurs par défaut afin que vous sachiez par où commencer le nettoyage.

6
Harald Wellmann

Ouvrez la vue Navigateur (Fenêtre> Afficher la vue> Autre> Général) et trouvez qu’il existe un dossier .settings dans votre projet, développez-le puis ouvrez le fichier «org.Eclipse.wst.common.project.facet.core.xml ”, Apportez les modifications ci-dessous et enregistrez le fichier.

Modifiez la version du module Web dynamique sur cette ligne en 2.5 - <installed facet=”jst.web” version=”2.4″/>

Remplacez la version JSF de cette ligne par 2.0 - <installed facet=”jst.jsf” version=”1.1″/>

Remplacez la version Java de cette ligne par la version 1.5 ou supérieure - <installed facet=”Java” version=”1.5″/>.

Une fois ces modifications effectuées, vous pouvez modifier la version du module Web dynamique de facette de projet à partir des propriétés du projet. sans vous donner cette guerre

3
Hatem Badawi

Dans mon cas, je voulais changer de facette dynamique de la forme 2.3 à 3.1.

Ce qui m'aide, c'est un changement de numéro en mai web.xml

De :

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://Java.Sun.com/dtd/web-app_2_3.dtd" >

<web-app  > 
  <display-name>Archetype Created Web Application</display-name>
</web-app>

À : 

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://Java.Sun.com/dtd/web-app_2_5.dtd" >

<web-app  > 
  <display-name>Archetype Created Web Application</display-name>
</web-app>

Et puis allez dans les propriétés -> Facettes du projet -> Décochez le module Web dynamique -> OK

Projet Maven mis à jour. 

2

Ce billet de blog m'a très bien aidé: Comment résoudre le problème Impossible de changer la version de la facette du projet Dynamic Web Module en 3.0 Erreur dans Eclipse .

Cet article explique que si le clic droit> propriétés> facettes du projet> changer la version de Dynamic Web Module ne vous aide pas, essayez ce qui suit: Clic droit> propriétés> ressources> aller à l'adresse que vous voyez dans la partie location. Ouvrez le fichier org.Eclipse.wst.common.project.facet.core et modifiez la version jst.web selon vos besoins. Actualisez le projet. Ça devrait marcher :)

1
user1419243

Ma solution était:

Changer l'en-tête dans mon web.xml:

Je mets:

<web-app xmlns="http://Java.Sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee 
          http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Servlet 3.0 Web Application</display-name>
</web-app>

et puis juste Maven -> Update Project 

1
Gere

vous devez changer les deux fichiers!

Première étape: fermer Eclipse

Deuxième étape: changer le libellé de la facette "jst.web" dans Org.Eclipse.wst.common.project.facet.core.xml

Et enfin, changez la version de xsd dans web.xml

Ça marche pour moi

0
jirou

Notez que l'emplacement actuel du schéma pour l'application Web est: 

xsi:schemaLocation="http://www.Oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd"
0
Mike V.C.

@TheSporkboy est presque correct. Je me suis heurté à cela aujourd'hui et après quelques manipulations de configuration, la solution était la suivante:

1- Modifiez le paramètre pour Dynamic Web Module dans les facettes du projet à la dernière version 3.1.

2- Ouvrez le fichier web.xml du projet de .../web-app_2_5.xsd à .../web-app_3_1.xsd

3- Mise à jour du projet Maven

0
AlexH