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.
- Mettez à niveau JDK de 1.7 à 1.8 dans POM, le compilateur Eclipse et les facettes du projet Eclipse.
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é.