Saya memiliki gejala yang sama dengan obat yang berbeda. Saya mencoba untuk meningkatkan webapp JSF 2.2.4 / Spring 3.0 saya ke JSF 2.3 untuk menikmati kait websocket JSF baru di sana dan Eclipse (sebenarnya STS) tidak mau bekerja sama. Dalam Project Facets Eclipse, JSF 2.3 tidak pernah tersedia sampai saya mengedit langsung file org.eclipse.wst.common.project.facet.core.xml seperti yang diarahkan pada jawaban sebelumnya - yang tertinggi adalah 2.2.
Inilah simpai yang saya lewati. Saya tidak tahu bahwa semua ini diperlukan karena pada dasarnya saya tidak mengerti semua konfigurasi ini.
Di Eclipse saya sering mendapat peringatan menakutkan, "Memodifikasi proyek faceted ketika implementasi dari satu atau lebih aspek yang diinstal tidak tersedia dapat berpotensi menghasilkan proyek yang rusak. Apakah Anda yakin ingin melanjutkan?" Ini mendorong saya untuk melakukan komitmen lebih sering tetapi tidak terjadi korupsi.
- Tingkatkan JDK dari 1,7 menjadi 1,8 di POM, Eclipse compiler, dan Eclipse Project Facets.
Perbarui dependensi Maven berikut:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
... untuk:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
... dan ...
<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>
... untuk:
<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>
Saya harus memperbarui deklarasi namespace web.xml saya dari:
<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">
... untuk:
<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">
Saya harus memperbarui Aspek Proyek -> Modul Web Dinamis dari 2.5 ke 3.0. Saya mencoba 3.1 tetapi mendapat kesalahan.
Dalam proses ini saya sering mendapat kesalahan dalam judul posting ini, "Tidak dapat mengubah versi segi proyek Dynamic Web Module menjadi 3.0" dan Eclipse menolak untuk mengkompilasi proyek atau menawarkan JSF 2.3 di Aspek Proyek. Ketika saya mengedit file org.eclipse.wst.common.project.facet.core.xml seperti yang diarahkan kesalahan menghilang, Eclipse menawarkan JSF 2.3 dalam Project Facets, dan proyek dikompilasi dan berjalan dengan baik pada Tomcat 9.0.8. Namun, Aspek Proyek masih memperingatkan "Implementasi versi 2.3 dari segi proyek jst.jsf tidak dapat ditemukan. Fungsionalitas akan terbatas." Saya menduga ini berarti bahwa autocomplete dan kenyamanan Eclipse lainnya tidak akan tersedia karena tidak dapat menemukan implementasi JSF 2.3 yang dinyatakan dalam POM saya.
Semoga ini bisa membantu seseorang. Pencarian Google hanya menghasilkan posting ini oleh Ali Bassam dan secara tidak langsung BalusC yang membantu.