Impossible de changer la version du module Web dynamique de la facette du projet en 3.0?

329

J'utilise maven pour créer une webapp dynamique dans Eclipse. J'ai ajouté quelques dossiers comme src/test/javaet src/test/resources. J'ai également changé la bibliothèque dans Java Build Path pour obtenir JavaSE-1.7. Tout va bien jusqu'ici.

Lorsque j'ai essayé de modifier le module Web dynamique de la facette des projets, quelque chose s'est mal passé. J'ai changé le Java en 1.7 au même endroit. Et il m'a toujours dit, ne peut pas changer la version du module Web dynamique de la facette du projet en 3.0.

J'ai changé tout ce qui aurait un effet sur le changement je pense.

EdgarZeng
la source
D'ACCORD. Je suis désolé. L'archétype est maven-archetype-webapp lorsque je crée le nouveau projet Maven, et le module Web dynamique est 2,3 dans les facettes du projet après avoir créé le projet. Je veux changer la version du module Web dynamique en 3.0, et j'ai obtenu «Impossible de changer la version du module Web dynamique en facette du projet en 3.0»
EdgarZeng
cela a fonctionné pour moi: stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
Titi Wangsa Bin Damhore
Dans Eclipse Kepler, lorsque je clique avec le bouton droit sur la facette 'Dynamic Web Module', il affiche une option 'Unlock'. Après le déverrouillage, j'ai pu changer la version facette. pour info seulement.
Jonathan
Est-ce un bug pour l'éclipse?
CDT

Réponses:

311

J'ai mis à jour mon web.xml

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

puis juste Maven -> Mettre à jour le projet ...

Sydney
la source
64
La mise à jour du web.xml n'a pas fonctionné pour moi. La solution proposée par @enkor fonctionne: stackoverflow.com/a/18632054/378633
jplandrain
5
Voici un en-tête valide pour un fichier 3.1 web.xml <? Xml version = "1.0" encoding = "UTF-8"?> <Web-app xmlns: xsi = " w3.org/2001/XMLSchema-instance " xmlns = " xmlns.jcp.org/xml/ns/javaee " xsi: schemaLocation = " xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd " id = " WebApp_ID "version =" 3.1 ">
Jakob Alexander Eichler
3
qu'en est-il des projets sans web.xml? :)
Anand Rockzz
le changement d'attribut de version à 3.0 n'a pas fonctionné pour moi non plus
tequilacat
Si aucune des solutions ci-dessus et ci-dessous ne fonctionne, veuillez passer par ce lien à 100%, cela fonctionnera.
Raki
587

Une autre façon consiste à modifier le fichier de configuration de facette du projet lui-même: org.eclipse.wst.common.project.facet.core.xml

Remplacez la version du module Web dynamique de cette ligne par 3.0 - <installed facet="jst.web" version="2.5"/>

Puis:

  1. Cliquez avec le bouton droit sur le projet (dans le panneau Explorateur de projets ).
  2. Sélectionnez Maven »Mettre à jour le projet (ou appuyez sur Alt+F5)

Vous trouverez ce fichier dans le .settingsrépertoire du projet Eclipse.

enkor
la source
3
Je vous remercie. En fait, je pense que nous devrions faire autre chose comme ci-dessus, changer la version du module Web dans le web.xml, sinon, la version «Descripteur de déploiement» ne changera pas en 3.0. Et est-ce un bug dans le plugin maven?
EdgarZeng
13
Cela semble être le seul moyen de résoudre ce problème lorsque vous passez sans web.xml dans votre projet.
Shawn Sherwood
3
J'avais déjà 3.0 dans le web.xml et STS n'a toujours pas réussi à mettre à jour et la mise à jour mvn n'a pas aidé non plus. Cette méthode fonctionne cependant.
MiB
2
Cela a aidé, en fait, allez à -> org.eclipse.wst.common.project.facet.core.xml -> supprimer toutes les entrées -> projet de mise à jour maven.
virtuose
7
Vous pouvez trouver le fichier org.eclipse.wst.common.project.facet.core.xml dans votre dossier d'application / projet .settings.
Rushi Shah
175

Je pense que j'ai eu le même problème que toi. Mon web.xml avait la version 2.5 tandis que le projet avait le (clic droit sur Projet-> Propriétés-> Project Facets->) Dynamic Web Module 2.3.

Bien que j'aie essayé de changer la version de 2.3 à 2.5, ECLIPSE ne le permettait pas. Solution: j'ai supprimé la coche sous le titre Dynamic Web Module, j'ai enregistré et j'ai mis à jour le projet. Le réveil automatique entre dans la boîte avec la bonne version. J'utilise Eclipse Kepler.

ps: regardez les commentaires de Jonathan juste en dessous, très utiles.

pagurix
la source
1
Ça a résolu mon problème mais pouvez-vous me dire pourquoi cela ne permettait pas initialement de paramétrer le module dynamique.
Suresh
26
@Suresh, je pense que le problème pour lequel il n'était pas permis de changer la version est parce qu'elle est verrouillée. Si vous cliquez avec le bouton droit sur la facette «Module Web dynamique», il affichera l'option «Déverrouiller». Après le déverrouillage, le dés-vérification de la facette DWM, la réapplication de la facette et la mise à jour du projet maven, l'erreur a disparu.
Jonathan
2
+1. Sans ce point extrêmement important, les autres réponses ici ne servent à rien. Seulement, je pense que le commentaire de Jonathan ne devrait pas être inclus dans la réponse.
Gangnus
1
+1 @Jonathan Votre conseil a fait le travail. Vous devez publier cela comme une réponse et nous devrions également la transmettre à Eclipse!
aksappy
Dans mon cas, cela fonctionne pourquoi, dans le module Web pom, une autre version a été définie pour le module Web Dnamic, donc cela entre en conflit avec la configuration du projet
ocrampico
49
  1. Cliquez sur votre dossier de projet.
  2. Allez dans Fenêtre> Afficher la vue> Navigateur
  3. Accédez à Navigator et développez le dossier .settings
  4. Ouvrir un org.eclipse.wst.common.project.facet.core.xmlfichier

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="2.3"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="java" version="1.8"/>
    </faceted-project>
  5. Changer la version comme ceci <installed facet="jst.web" version="3.1"/>

  6. sauver
  7. Mettez simplement à jour votre projet. Faites un clic droit sur le dossier du projet> Maven> Mettre à jour le projet> Sélectionnez le projet et cliquez sur «OK»

Tout cela a fonctionné pour moi.

aabarbosa
la source
43

J'ai eu le même problème et j'ai même essayé de supprimer le projet et de l'ajouter à nouveau. L'astuce a été de supprimer le .settingsrépertoire.

Adrian Ber
la source
2
Je devais aussi faire ça. J'utilisais un projet Web Spring avec une configuration basée sur Java, donc la mise à jour d'un web.xml n'était pas possible pour moi.
bcody
Pourquoi cela a fonctionné après la suppression du .setting pouvez-vous s'il vous plaît expliquer
Abhijit Chakra
Ce répertoire .settings contient beaucoup de choses et peut-être que certaines d'entre elles ont changé avec le temps. Je ne sais pas exactement quelle partie a influencé ce comportement, mais c'était comme une réinitialisation. Aucune des autres réponses n'a fonctionné pour moi, mais celle-ci. Et il semble que je n'étais pas le seul dans cette situation.
Adrian Ber
A fonctionné pour moi, j'ai eu cette erreur: "Impossible de changer la version de la facette de projet EAR en 1.3."
Giovanni P.
A travaillé pour moi! J'ai eu l'erreur: "Impossible de changer la version du module Web dynamique de la facette du projet en 3.0"
Anup Ghosh
24

Supprimer

.settings 
.classpatch 
.projejct 
target

et réimportez le projet maven.

Pintér Tamás
la source
Comment réimporter le projet Maven. Je suis nouveau dans ce domaine.
Daniel Brower
21

Ce qui a fonctionné pour moi:

  1. Changez le Java en 1.8 (ou 1.7)

Dans votre POM - vous devez définir le plugin du compilateur sur la version 1.8 (ou 1.7) dans la <build>section:

  <build>
    ...
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>  
      </plugins>    
  </build>

Assurez-vous que la modification Java Build affiche 1.8. Si ce n'est pas le cas - cliquez sur MODIFIER et sélectionnez ce que cela devrait être.

entrez la description de l'image ici

  1. Modifiez web.xml pour que 3.0 soit référencé dans la version et dans le lien

entrez la description de l'image ici

  1. Assurez-vous que Java est défini sur 1,8 dans les facettes du projet

entrez la description de l'image ici

  1. À ce stade, je ne pouvais toujours pas modifier le module Web dynamique;

Au lieu de le changer:

a) décochez le module Web dynamique

b) postuler

c) vérifiez à nouveau. La nouvelle version 3.0 devrait être définie. **

entrez la description de l'image ici

Après avoir appliqué et vérifié à nouveau:

entrez la description de l'image ici

J'espère que cela t'aides.

Witold Kaczurba
la source
15

Faites un clic droit sur le projetPropriétés ; dans Project Facets , désélectionnez Dynamic Web Module (la version doit être 3.1 ) et désélectionnez JavaServer Faces (la version est 2.2 ).

Change ça:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

pour ça:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

Ensuite, supprimez le préfixe avant param-nameet similaire.

Enfin, Maven -> Mettre à jour le projet .

Henry ren
la source
8

veuillez ouvrir la vue Navigateur et l'étape suivante

  1. (Fenêtre> Afficher la vue> Autre> Général) et recherchez qu'il existe un dossier .settings sous votre projet, développez-le puis ouvrez le fichier "org.eclipse.wst.common.project.facet.core.xml", définissez le modifications ci-dessous et enregistrez le fichier.
  2. Changez la version du module Web dynamique dans cette ligne en 2.5 -
  3. Changez la version Java de cette ligne en 1.5 ou supérieure -.
GAURAV KUMAR GUPTA
la source
5
Vous avez oublié de dire quelle vue vous devez sélectionner dans le dossier "Général" de la boîte de dialogue "Afficher la vue". Est-ce la vue "Navigateur"?
Roberto Linares
6

Ouvrez web.xml à partir de la structure du projet http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Application Web Servlet 3.0

et mettez à jour le fichier web.xml, par exemple changez la version = "2.5"

Modifiez également le fichier org.eclipse.wst.common.project.facet.core.xml à partir de votre fichier .settings de projet Suivez les étapes 1. Fenêtre> Afficher la vue> Autre> Général> Navigateur

  1. Il y a un dossier .settings sous le répertoire de votre projet

  2. Changez la version du module Web dynamique dans cette ligne en 2.5 4.Changez la version Java de cette ligne en 1.5 ou supérieur

Actualisez maintenant votre projet et préparez-vous à fonctionner sur votre serveur.

Suivez le blog de la solution http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

La solution est produite avec des illustrations d'images

Siddaram
la source
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change.
Micha
J'ai apporté des modifications au fichier pom.xml comme indiqué dans crunchify.com/… . Mais cela ne suffisait pas. J'ai également dû suivre la recommandation d'ouvrir le dossier .settings et de modifier le fichier ou le fichier .eclipse.wst.common.project.facet.core.xml.
blackjack
6

Les étapes les meilleures et les plus simples ont résolu ce problème pour moi est 1) Propriétés -> Facettes du projet -> Désélectionnez / décochez la case du module Web dynamique -> Appliquer 2) Maintenant, changez pour la version souhaitée Appliquer 3) Cochez la case Module Web dynamique .. - Maintenant, vous avez terminé -

ensoleillé
la source
1
A bien fonctionné, mais quelle en est la conséquence?
sg28
4

C'est une autre façon de résoudre ce problème (consultez-le, j'espère qu'il vous aidera à résoudre votre problème)

PROBLÈME

Impossible de changer la version du module Web dynamique de la facette du projet 2.3 en 3.0

SOLUTION

  1. Accédez à l'emplacement de votre projet (ex.-D: / maven / todo)
  2. allez dans le dossier .setting
  3. recherchez ce fichier: org.eclipse.wst.common.project.facet.core.xml
  4. ouvrez le fichier et modifiez la propriété "jst.web" de 2.3 à 3.0, puis enregistrez
  5. Faites un clic droit sur le projet rafraîchissez le projet et mettez à jour maven
  6. Terminé!!!....
chhaya Joshi
la source
3

L'astuce web.xml fonctionne parce que vous dites maintenant explicitement à WTP que vous utilisez cette version de servlet spécifique, indépendamment de ce que le conteneur prend en charge.

Dans mon cas, j'utilise la configuration d'annotation dans un projet Maven et je n'ai pas de fichier web.xml. Il s'avère qu'en l'absence d'un fichier web.xml, WTP examine vos dépendances Maven pour déterminer la version de servlet à utiliser. Dans mon cas, j'avais défini ce qui suit:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

Le changer en 6.0 a résolu le problème et il utilise maintenant Servlet 3.0 au lieu de 3.1, qui est la valeur par défaut pour JavaEE 7. Étant donné que je devais passer de Tomcat 8 à Tomcat 7, Tomcat 7 ne prend en charge que le profil Web JavaEE 6. Maintenant, les choses fonctionnent à merveille.

Ryan J. McDonough
la source
3

J'ai eu le même problème, l'édition de web.xml ainsi que la modification de fichier dans le dossier .settings seul n'a pas aidé. Ma solution était de pointer directement le plugin du compilateur maven pour utiliser la version java souhaitée en éditant pom.xml:

  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>    
  </build> 

Maintenant, exécutez Maven-> Update project et après cela, vous pouvez changer la version des servlets dans properties-> project facets-> Dynamic Web module version ou, comme écrit précédemment, en modifiant manuellement org.eclipse.wst.common.project.facet.core. xml dans le dossier .settings de votre projet.

troy
la source
2

Dans mon cas, le web.xml a été référencé par un dtd. Après avoir changé cela en référence xsd comme celle publiée par Sydney, cela a fonctionné.

keiki
la source
2

J'ai eu le même problème, la suppression du dossier .settings a résolu le problème

Nagababu
la source
1

Ma solution au problème qui ne m'a pas permis de modifier la version du module Web dynamique à facettes du projet dans Eclipse (Mars) était:

  • Désactiver la nature Maven
  • Assurez-vous que les espaces de noms web.xml pointent vers la bonne version
  • Réactiver Maven Nature
  • Maven »Mettre à jour le projet (ou appuyer sur Alt + F5)
Andrés S.
la source
1

Si la réponse de Sydney ne vous aide toujours pas, essayez ci-dessous. Après avoir suivi la réponse de Sydney, passez à Propriétés> Facettes de projets désélectionnez Module Web dynamique, puis modifiez la version pour qu'elle corresponde à votre web.config, puis sélectionnez à nouveau. Appliquer> Enregistrer puis Maven Update.

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Web_App_1" version="3.1">

<display-name>JavaServerFaces</display-name>

<!-- Change to "Production" when you are ready to deploy -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>jsfs/hello.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map these files with JSF -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>jsfs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

punkck
la source
1

J'ai essayé plusieurs des réponses ici, mais aucune n'a fonctionné pour moi. Ensuite, j'ai trouvé un article sur mon problème ici . J'ai pensé à le partager ici aussi.

Vous trouverez ci-dessous les étapes franchies.

  1. Définissez le niveau de conformité du compilateur.
  2. Mettre à jour la facette du projet
  3. Mettre à jour le JRE installé à partir des préférences
  4. Ajout de la configuration dans pom.xml pour utiliser java 1.7 et enfin
  5. mise à jour du projet de Maven.
Md Faisal
la source
1

Pour un projet Web Eclipse Maven, la modification de la version du module Web dynamique doit vérifier trois emplacements. Si l'on utilise eclipse, et après avoir vérifié les points suivants: 1) web.xml

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

2) maven:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>   ## ensure you have tomcat 7 not other version
</dependency>

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.0</version>
      <configuration>
            <source>1.7</source> ## at least 6
            <target>1.7</target>
      </configuration>
</plugin>

3) Le chemin de construction de l'éclipse et la version du compilateur sont 1.7

vous avez toujours un marqueur d'erreur sur maven:

cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied

Ensuite, vous pouvez: décocher le module Web dynamique et le revérifier. Je pense que c'est parce que les paramètres du fichier éclipse sont corrompus d'une manière ou d'une autre. A propos de la deuxième astuce tomcat quelle version est une bonne note.

Tiina
la source
1

J'ai eu cette erreur lorsque j'essaie de convertir un projet Java général en projet Maven .

Ce que j'ai fait était de déterminer la version du compilateur Java requise par mon projet. Pour mon projet, la version minimale Java est 1.8.

En abaissant la version à quelque chose de plus bas que 1.8mon IDE, je commencerai à me plaindre qu'il ne reconnaît pas un tas de bibliothèques importées, donc je détermine la version Java minimale de ma comme1.8

1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version

entrez la description de l'image ici

Assurez-vous maintenant que la version du compilateur Java utilise la même version Java que celle que vous avez définie dans Project Facets.

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same. 
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

entrez la description de l'image ici

Après les modifications, l'erreur doit être résolue. Si l'erreur persiste, cliquez avec le bouton droit sur projet -> Maven -> Mettre à jour le projet

user3437460
la source
0

Ouvrez le fichier org.eclipse.wst.common.project.facet.core.xml et remplacez la version jst.web par 3.0. Mettez également à jour le fichier web.xml vers la version 3.0. Enregistrez et mettez à jour le projet. J'espère que cela t'aides. J'utilise Eclipse Juno

Sheetal
la source
0

Ceci est une variation de la réponse de pagurix, mais en utilisant Eclipse Mars.

Changez votre fichier web.xml en web.bak

Ignorez les erreurs, nous le régénérerons ensuite.

Allez dans les propriétés du projet -> facettes du projet et définissez la version du module Web dynamique selon vos besoins. Eclipse vous permet désormais d'économiser.

Maintenant, faites un clic droit sur le projet. Choisissez Java EE Tools -> Generate Deployment Descriptor Stub.

Cela crée un nouveau web.xml avec la version requise.

Ouvrez le nouveau web.xml et copiez-le dans l'en-tête XML et la balise d'ouverture complète de l'application web vers votre web.bak d'origine, supprimez le nouveau web.xml et renommez web.bak en web.xml.

Terminé.

Adam
la source
0

Le mien était Web Module 3.0en web.xml, mais properties>Dynamic Web Moduleil était sur3.1

J'ai changé le web.xmlen ceci:

<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

après ce changement, faites: right click on project>Maven>Update Project...

Amin Sh
la source
0

Ce problème avec la version, faites un clic droit sur le projet-> propriétés-> Facettes du projet-> faites un clic droit sur Dynamic Web Module-> déverrouillez-le-> décochez-> sélectionnez la version 2.5-> Appliquer-> Mettre à jour le maven

Gen
la source
0

J'ai résolu le problème en modifiant web.xml avec la version correcte, les emplacements xsd et en modifiant org.eclipse.wst.common.project.facet.core.xml avec la version correcte et en effectuant la mise à jour maven .

Vaibs
la source
0

la mise à jour de maven a fonctionné pour moi

sélectionnez le projet puis appuyez sur ALT + F5 puis sélectionnez le projet cliquez sur ok

Hari
la source
0

J'ai eu le même symptôme avec une cure différente. J'essayais de mettre à niveau ma webapp JSF 2.2.4 / Spring 3.0 vers JSF 2.3 afin de profiter des nouveaux crochets de prise Web JSF là-bas et Eclipse (en fait STS) ne coopérerait pas. Dans Project Facets d'Eclipse, JSF 2.3 n'est jamais devenu disponible jusqu'à ce que j'édite directement le fichier org.eclipse.wst.common.project.facet.core.xml comme indiqué dans les réponses précédentes - le plus élevé serait 2.2.

Voici les cerceaux que j'ai sautés. Je ne sais pas si tout cela était nécessaire car je ne comprends pas fondamentalement toute cette configuration.

Dans Eclipse, j'ai souvent reçu un avertissement effrayant: "La modification d'un projet à facettes lorsque les implémentations d'une ou plusieurs facettes installées ne sont pas disponibles peut potentiellement entraîner un projet corrompu. Voulez-vous vraiment continuer?" Cela m'a incité à faire des commits plus fréquents mais aucune corruption n'est survenue.

  1. Mettez à niveau JDK de 1.7 à 1.8 dans POM, le compilateur Eclipse et les facettes du projet Eclipse.
  2. Mettez à jour les dépendances Maven suivantes:

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

    ... à:

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

... et ...

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.4</version>
    </dependency>

... à:

    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>javax.faces-api</artifactId>
        <version>2.3</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0</version>
    </dependency>

J'ai dû mettre à jour mes déclarations d'espace de noms web.xml à partir de:

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

... à:

<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" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

J'ai dû mettre à jour Project Facets -> Dynamic Web Module de 2.5 à 3.0. J'ai essayé 3.1 mais j'ai eu des erreurs.

Dans ce processus, j'ai souvent eu l'erreur dans le titre de cet article, "Impossible de changer la version du module Web dynamique du facette du projet en 3.0" et Eclipse a refusé de compiler le projet ou d'offrir JSF 2.3 dans les facettes du projet. Lorsque j'ai modifié le fichier org.eclipse.wst.common.project.facet.core.xml comme indiqué, les erreurs ont disparu, Eclipse a proposé JSF 2.3 dans Project Facets, et le projet a été compilé et s'est bien déroulé sur Tomcat 9.0.8. Cependant, Project Facets avertissait toujours "L'implémentation de la version 2.3 de la facette de projet jst.jsf est introuvable. La fonctionnalité sera limitée." Je soupçonne que cela signifie simplement que la saisie semi-automatique et d'autres commodités Eclipse ne seront pas disponibles car il ne peut pas trouver l'implémentation JSF 2.3 déclarée dans mon POM.

J'espère que cela aide quelqu'un. Les recherches Google n'ont produit que ce post d'Ali Bassam et indirectement de BalusC, ce qui a aidé.

snakedog
la source
0

J'ai eu le même problème - j'ai juste supprimé le projet de mon espace de travail, puis nettoyé les "fichiers / dossiers eclipse, par exemple: .project, .settings, etc.) puis réimporté le projet maven, cela a fonctionné.

Thomás Preis
la source