私は別の治療法で同じ症状を経験しました。JSF 2.2.4/Spring 3.0 webapp を JSF 2.3 にアップグレードして新しい JSF websocket フックを利用しようとしましたが、Eclipse (実際には STS) は連携しませんでした。Eclipse の Project Facets では、以前の回答で指示されたように org.eclipse.wst.common.project.facet.core.xml ファイルを直接編集するまで、JSF 2.3 は利用できませんでした。最高は 2.2 でした。
これが私が飛び越えたフープです。基本的にこの構成をすべて理解していないため、これらすべてが必要だったかどうかはわかりません。
Eclipse では、「インストールされている 1 つ以上のファセットの実装が利用できない場合にファセット プロジェクトを変更すると、プロジェクトが破損する可能性があります。続行してもよろしいですか?」という恐ろしい警告が頻繁に表示されました。これにより、より頻繁にコミットを行うようになりましたが、破損は発生しませんでした。
- POM、Eclipse コンパイラー、および Eclipse Project Facets で JDK を 1.7 から 1.8 にアップグレードします。
次の Maven 依存関係を更新します。
<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>
... と ...
<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>
web.xml 名前空間宣言を次から更新する必要がありました。
<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">
Project Facets -> Dynamic Web Module を 2.5 から 3.0 に更新する必要がありました。3.1 を試しましたが、エラーが発生しました。
このプロセスで、この投稿のタイトルに「プロジェクト ファセット動的 Web モジュールのバージョンを 3.0 に変更できません」というエラーが頻繁に表示され、Eclipse はプロジェクトのコンパイルまたはプロジェクト ファセットでの JSF 2.3 の提供を拒否しました。指示に従って org.eclipse.wst.common.project.facet.core.xml ファイルを編集すると、エラーは消え、Eclipse は Project Facets で JSF 2.3 を提供し、プロジェクトはコンパイルされ、Tomcat 9.0.8 で正常に実行されました。ただし、Project Facets は依然として「プロジェクト ファセット jst.jsf のバージョン 2.3 の実装が見つかりませんでした。機能が制限されます。」と警告しています。これは、POM で宣言された JSF 2.3 実装が見つからないため、オートコンプリートやその他の Eclipse の便利な機能が利用できないことを意味しているだけだと思います。
これが誰かに役立つことを願っています。Google 検索では、Ali Bassam によるこの投稿のみが得られ、間接的に BalusC が役立ちました。