Farklı bir tedavi ile aynı belirtiye sahiptim. Orada yeni JSF websocket hooks zevk için JSF 2.2.4 / Bahar 3.0 webapp JSF 2.3 yükseltmeye çalışıyordu ve Eclipse (aslında STS) işbirliği olmaz. Eclipse'nin Proje Özelliklerinde, önceki cevaplarda belirtildiği gibi doğrudan org.eclipse.wst.common.project.facet.core.xml dosyasını düzenleyene kadar JSF 2.3 hiçbir zaman mevcut değildi - en yüksek gitmek 2.2 idi.
İşte atladığım çemberler. Bunların hepsinin gerekli olduğunu bilmiyorum çünkü temelde tüm bu yapılandırmayı anlamıyorum.
Eclipse'de sık sık korkutucu bir uyarı aldım, "Bir veya daha fazla yüklenmiş faset uygulaması mevcut olmadığında yönlü bir projeyi değiştirmek potansiyel olarak bozuk bir projeye neden olabilir. Devam etmek istediğinizden emin misiniz?" Bu, daha sık taahhütte bulunmamı istedi, ancak herhangi bir yolsuzluk olmadı.
- JDK'yı POM, Eclipse derleyicisi ve Eclipse Project Facets'te 1.7'den 1.8'e yükseltin.
Aşağıdaki Maven bağımlılıklarını güncelleyin:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
... için:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
... ve ...
<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>
... için:
<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 ad alanı bildirimlerimi güncellemek zorunda kaldım:
<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">
... için:
<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'ten 3.0'a güncellemek zorunda kaldım. 3.1 denedim ama hatalar aldım.
Bu süreçte sık sık bu yazının başlığında, "Proje faseti Dinamik Web Modülünün sürümü 3.0 olarak değiştirilemiyor" hatası alıyorum ve Eclipse projeyi derlemeyi veya Proje Fasetlerinde JSF 2.3 teklifini reddetti. Org.eclipse.wst.common.project.facet.core.xml dosyasını hataları düzelttiği şekilde düzenlediğimde, Eclipse Project Facets'te JSF 2.3'ü sundu ve proje derlendi ve Tomcat 9.0.8'de iyi çalıştı. Ancak, Proje Özellikleri hala "Proje faset jst.jsf'nin 2.3 sürümünün uygulanması bulunamadı. İşlevsellik sınırlı olacaktır." Bunun, otomatik tamamlama ve diğer Eclipse kolaylıklarının kullanılabilir olmayacağı anlamına geliyor çünkü POM'mda bildirilen JSF 2.3 uygulamasını bulamıyor.
Umarım bu birine yardımcı olur. Google aramaları sadece bu yayını Ali Bassam ve dolaylı olarak BalusC tarafından sağladı.