ฉันมีอาการเช่นเดียวกันกับการรักษาที่แตกต่างกัน ฉันพยายามอัปเกรด webapp JSF 2.2.4 / Spring 3.0 เป็น JSF 2.3 เพื่อเพลิดเพลินไปกับ JSF websocket hooks ใหม่ที่นั่นและ Eclipse (จริง ๆ แล้ว STS) จะไม่ร่วมมือกัน ใน Project Facets ของ Eclipse, JSF 2.3 จะไม่สามารถใช้งานได้จนกว่าฉันจะแก้ไขไฟล์ org.eclipse.wst.common.project.facet.core.xml โดยตรงตามที่ระบุในคำตอบก่อนหน้านี้ - สูงสุดคือ 2.2
นี่คือห่วงที่ฉันกระโดดผ่าน ฉันไม่ทราบว่าสิ่งเหล่านี้จำเป็นเพราะฉันไม่เข้าใจการกำหนดค่านี้ทั้งหมด
ใน Eclipse ฉันได้รับคำเตือนที่น่ากลัวบ่อยครั้ง "การแก้ไขโปรเจ็กต์ faceted เมื่อการนำไปใช้งานของ facets ที่ติดตั้งตั้งแต่หนึ่งตัวขึ้นไปไม่สามารถทำให้โครงการเสียหายได้คุณแน่ใจหรือว่าต้องการดำเนินการต่อ" สิ่งนี้ทำให้ฉันต้องทำบ่อยครั้งมากขึ้น แต่ก็ไม่เกิดความเสียหาย
- อัพเกรด JDK จาก 1.7 เป็น 1.8 ใน POM, คอมไพเลอร์ Eclipse และ Eclipse Project Facets
อัพเดตการพึ่งพา 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 แต่มีข้อผิดพลาด
ในกระบวนการนี้ฉันได้รับข้อผิดพลาดบ่อยครั้งในชื่อเรื่องของโพสต์นี้ "ไม่สามารถเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet Dynamic Web Module เป็น 3.0" และ Eclipse ปฏิเสธที่จะคอมไพล์โปรเจ็กต์หรือเสนอ JSF 2.3 ใน Project Facets เมื่อฉันแก้ไขไฟล์ org.eclipse.wst.common.project.facet.core.xml ตามที่ระบุข้อผิดพลาดหายไป Eclipse เสนอ JSF 2.3 ใน Project Facets และโปรเจ็กต์คอมไพล์และรันได้ดีบน Tomcat 9.0.8 อย่างไรก็ตาม Project Facets ยังคงเตือน "ไม่สามารถใช้งานเวอร์ชัน 2.3 ของ project facet jst.jsf ได้ฟังก์ชันการทำงานจะถูก จำกัด " ฉันสงสัยว่านี่หมายถึงว่าการเติมข้อความอัตโนมัติและสิ่งอำนวยความสะดวกอื่น ๆ ของ Eclipse จะไม่สามารถใช้ได้เพราะไม่พบการใช้งาน JSF 2.3 ที่ประกาศใน POM ของฉัน
หวังว่านี้จะช่วยให้คน การค้นหาของ Google ให้ผลเฉพาะโพสต์นี้โดย Ali Bassam และ BalusC ทางอ้อมซึ่งช่วย