ไม่สามารถเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet Dynamic Web Module เป็น 3.0 ได้หรือไม่


329

ฉันใช้ maven เพื่อสร้าง webapp แบบไดนามิกใน Eclipse ฉันเพิ่มบางโฟลเดอร์ชอบและsrc/test/java src/test/resourcesฉันเปลี่ยนไลบรารีใน Java Build Path เพื่อรับ JavaSE-1.7 ตกลงทั้งหมดแล้วที่นี่

เมื่อฉันพยายามเปลี่ยน Project Facet Dynamic Web Module มีบางอย่างผิดปกติ ฉันเปลี่ยน Java เป็น 1.7 ในที่เดียวกัน และมันยังบอกฉันว่าไม่สามารถเปลี่ยนเวอร์ชั่นของโปรเจค Facet Dynamic Web Module เป็น 3.0 ได้

ฉันเปลี่ยนทุกอย่างที่มีผลต่อการเปลี่ยนแปลงที่ฉันคิด


ตกลง. ฉันขอโทษเกี่ยวกับเรื่องนั้น แม่แบบคือ maven-archetype-webapp เมื่อฉันสร้างโครงการ Maven ใหม่และ Dynamic Web Module คือ 2.3 ใน Project Facets หลังจากที่ฉันสร้างโครงการ ฉันต้องการเปลี่ยนรุ่นของ Dynamic Web Module เป็น 3.0 และฉันได้รับ 'ไม่สามารถเปลี่ยนรุ่นของโปรเจ็กต์ facet Dynamic Web Module เป็น 3.0'
EdgarZeng

สิ่งนี้ใช้ได้กับฉัน: stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1
Titi Wangsa Bin Damhore

ใน Eclipse Kepler เมื่อฉันคลิกขวาที่ facet 'Dynamic Web Module' จะแสดงตัวเลือก 'Unlock' หลังจากปลดล็อคฉันสามารถเปลี่ยนเวอร์ชันของ facet สำหรับข้อมูลเท่านั้น
Jonathan

นี่เป็นข้อบกพร่องสำหรับ eclipse หรือไม่?
CDT

คำตอบ:


311

ฉันอัพเดท web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Servlet 3.0 Web Application</display-name>
</web-app>

จากนั้นเพียงMaven -> อัปเดตโครงการ ...


64
อัปเดตของ web.xml ไม่ทำงานสำหรับฉัน วิธีการแก้ปัญหาที่ได้รับจาก @enkor ใช้งานได้: stackoverflow.com/a/18632054/378633
jplandrain

5
นี่คือส่วนหัวที่ถูกต้องสำหรับไฟล์ 3.1 web.xml <? xml version = "1.0" encoding = "UTF-8"?> <web-app xmlns: xsi = " w3.org/2001/XMLSchema-instance " xmlns = " xmlns.jcp.org/xml/ns/javaee " xsi: schemaLocation = " xmlns.jcp.org/xml/ns/javaee xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd " id = " WebApp_ID "version =" 3.1 ">
Jakob Alexander Eichler

3
แล้วโครงการที่ไม่มี web.xml ล่ะ :)
Anand Rockzz

การเปลี่ยนแอตทริบิวต์เวอร์ชั่นเป็น 3.0 ไม่ทำงานสำหรับฉันเช่นกัน
tequilacat

หากไม่มีวิธีการแก้ปัญหาด้านบนและด้านล่างหากไม่สามารถใช้งานได้โปรดไปที่ลิงค์นี้ 100% มันจะใช้งานได้
Raki

587

อีกวิธีหนึ่งคือการแก้ไขไฟล์กำหนดค่าโครงการ facet: org.eclipse.wst.common.project.facet.core.xml

เปลี่ยนรุ่นโมดูลเว็บแบบไดนามิกในบรรทัดนี้เป็น 3.0 - <installed facet="jst.web" version="2.5"/>

แล้ว:

  1. คลิกขวาที่โครงการ (ในแผงProject Explorer )
  2. เลือกMaven »อัพเดตโครงการ (หรือกดAlt+F5)

คุณจะพบไฟล์นี้ใน.settingsไดเรกทอรีภายในโครงการ Eclipse


3
ขอบคุณ. ที่จริงฉันคิดว่าเราควรทำอย่างอื่นเหมือนข้างต้นเปลี่ยนรุ่นของโมดูลเว็บใน web.xml ถ้าไม่ใช่เวอร์ชัน 'Deployment Descriptor' จะไม่เปลี่ยนเป็น 3.0 และนั่นเป็นข้อผิดพลาดในปลั๊กอิน maven หรือไม่?
EdgarZeng

13
นี่เป็นวิธีเดียวในการแก้ไขปัญหานี้เมื่อคุณไม่ใช้ web.xml ในโครงการของคุณ
Shawn Sherwood

3
ฉันมี 3.0 ใน web.xml แล้วและ STS ยังไม่สามารถอัปเดตและการอัปเดต mvn ก็ไม่ได้ช่วยอะไรเช่นกัน อย่างไรก็ตามวิธีนี้ใช้ได้ผล
MiB

2
สิ่งนี้ช่วยได้จริงไปที่ -> org.eclipse.wst.common.project.facet.core.xml -> ลบรายการทั้งหมด -> โครงการปรับปรุง maven
อัจฉริยะ

7
คุณสามารถค้นหาไฟล์ org.eclipse.wst.common.project.facet.core.xml ในโฟลเดอร์ .settings / application ของคุณ
Rushi Shah เมื่อ

175

ฉันคิดว่าฉันมีปัญหาเช่นเดียวกับคุณ web.xml ของฉันมีรุ่น 2.5 ในขณะที่โครงการมี (คลิกขวาที่ Project-> Properties-> Project Facets->) Dynamic Web Module 2.3

แม้ว่าฉันจะพยายามเปลี่ยนเวอร์ชั่นจาก 2.3 เป็น 2.5 ECLIPSE ไม่อนุญาตก็ตาม วิธีการแก้ไข: ฉันลบเครื่องหมายถูกออกจากส่วนหัว Dynamic Web Module ฉันบันทึกและฉันมีโครงการปรับปรุง การปลุกอีกครั้งโดยอัตโนมัติกำลังเข้าสู่กล่องด้วยรุ่นที่ถูกต้อง ฉันใช้ Eclipse Kepler

ps: ดูความคิดเห็นของโจนาธานด้านล่างมีประโยชน์มาก


1
เยี่ยมมากมันแก้ปัญหาของฉันได้ แต่คุณสามารถบอกฉันได้ว่าทำไมไม่อนุญาตให้ตั้งโมดูลแบบไดนามิกในขั้นต้น
Suresh

26
@Suresh ฉันคิดว่าปัญหาว่าทำไมมันไม่อนุญาตให้เปลี่ยนรุ่นเป็นเพราะมันถูกล็อค หากคุณคลิกขวาที่ 'โมดูลเว็บไดนามิก' มันจะแสดงตัวเลือก 'ปลดล็อค' หลังจากปลดล็อคแล้วให้ยกเลิกการตรวจสอบแง่มุมของ DWM นำมาใช้ใหม่อีกครั้งและทำการอัพเดต maven โครงการข้อผิดพลาดก็หายไป
Jonathan

2
+1 หากปราศจากจุดสำคัญอย่างยิ่งนี้คนอื่น ๆ ก็จะไม่ได้รับคำตอบ ฉันคิดว่าโจนาธานไม่ควรแสดงความคิดเห็นไว้ในคำตอบ
Gangnus

1
+1 @Jonathan เคล็ดลับของคุณใช้งานได้แล้ว คุณต้องเผยแพร่สิ่งนี้เป็นคำตอบและเราควรยกระดับเป็น Eclipse!
aksappy

ในกรณีของฉันงานนี้ทำไมใน pom เว็บโมดูลมีถูก setted รุ่นสำหรับโมดูลเว็บ Dnamic อื่นดังนั้นความขัดแย้งนี้เล็กน้อยโครงการการกำหนดค่า
ocrampico

49
  1. คลิกที่โฟลเดอร์โครงการของคุณ
  2. ไปที่หน้าต่าง> แสดงมุมมอง> นาวิเกเตอร์
  3. ไปที่นาวิเกเตอร์และขยายโฟลเดอร์. setset
  4. เปิดorg.eclipse.wst.common.project.facet.core.xmlไฟล์

    <?xml version="1.0" encoding="UTF-8"?>
    <faceted-project>
      <fixed facet="wst.jsdt.web"/>
      <installed facet="jst.web" version="2.3"/>
      <installed facet="wst.jsdt.web" version="1.0"/>
      <installed facet="java" version="1.8"/>
    </faceted-project>
  5. เปลี่ยนรุ่นเช่นนี้ <installed facet="jst.web" version="3.1"/>

  6. บันทึก
  7. เพียงแค่อัพเดตโครงการของคุณ คลิกขวาที่โฟลเดอร์โครงการ> Maven> อัปเดตโครงการ> เลือกโครงการและคลิก 'ตกลง'

แค่นี้ก็ใช้ได้กับฉัน


43

ฉันมีปัญหาเดียวกันและฉันก็พยายามลบโครงการและเพิ่มอีกครั้ง เคล็ดลับอะไรคือลบ.settingsไดเรกทอรี


2
ฉันก็ต้องทำเช่นนี้ ฉันใช้ Spring web project พร้อมการตั้งค่าบน Java ดังนั้นการอัพเดต web.xml จึงเป็นไปไม่ได้สำหรับฉัน
bcody

ทำไมมันทำงานหลังจากลบ. setting คุณกรุณา exaplain
Abhijit Chakra

ไดเรกทอรีการตั้งค่านั้นมีหลายสิ่งหลายอย่างและบางอย่างอาจเปลี่ยนแปลงไปตามกาลเวลา ฉันไม่รู้ว่าส่วนใดมีอิทธิพลต่อพฤติกรรมนี้ แต่นี่เป็นเหมือนการรีเซ็ต ไม่มีคำตอบอื่นที่เหมาะกับฉัน แต่เป็นคำตอบนี้ และดูเหมือนว่าฉันไม่ใช่คนเดียวในสถานการณ์นี้
Adrian Ber

ทำงานให้ฉันฉันมีข้อผิดพลาดนี้: "ไม่สามารถเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet EAR เป็น 1.3"
Giovanni P.

ทำงานให้ฉัน! ฉันมีข้อผิดพลาด: "ไม่สามารถเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet Dynamic Web Module เป็น 3.0"
Anup Ghosh

24

ลบ

.settings 
.classpatch 
.projejct 
target

และนำเข้าโครงการ Maven อีกครั้ง


ฉันจะนำเข้าอีกครั้งในโครงการ Maven ได้อย่างไร ฉันยังใหม่กับสิ่งนี้
Daniel Brower

21

อะไรที่ทำให้ฉัน:

  1. เปลี่ยน Java เป็น 1.8 (หรือ 1.7)

ใน POM ของคุณ - คุณต้องตั้งค่าคอมไพเลอร์ปลั๊กอินเป็นรุ่น 1.8 (หรือ 1.7) ใน<build>ส่วน:

  <build>
    ...
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.0</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>  
      </plugins>    
  </build>

ตรวจสอบให้แน่ใจว่าการเปลี่ยนแปลง Java Build แสดง 1.8 หากไม่ได้ - คลิกแก้ไขและเลือกสิ่งที่ควรจะเป็น

ป้อนคำอธิบายรูปภาพที่นี่

  1. แก้ไข web.xml เพื่อให้มีการอ้างอิง 3.0 ในเวอร์ชันและในลิงก์

ป้อนคำอธิบายรูปภาพที่นี่

  1. ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า Java เป็น 1.8 ใน Project Facets

ป้อนคำอธิบายรูปภาพที่นี่

  1. ในขั้นตอนนี้ฉันยังไม่สามารถเปลี่ยน Dynamic Web Module ได้

แทนที่จะเปลี่ยน:

a) ยกเลิกการเลือกการ Dynamic Web Module

ข) ใช้

c) ตรวจสอบอีกครั้ง ควรตั้งค่าเวอร์ชันใหม่ 3.0 **

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากสมัครและตรวจสอบอีกครั้ง:

ป้อนคำอธิบายรูปภาพที่นี่

หวังว่านี่จะช่วยได้


15

คลิกขวาที่โครงการคุณสมบัติ ; ในProject Facetsให้ยกเลิกการเลือกDynamic Web Module (เวอร์ชั่นควรเป็น3.1 ) และยกเลิกการเลือกJavaServer Faces (เวอร์ชั่นคือ2.2 )

เปลี่ยนสิ่งนี้:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

สำหรับสิ่งนี้:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

จากนั้นลบคำนำหน้าก่อน param-nameและสิ่งที่คล้ายกัน

สุดท้ายMaven -> โครงการปรับปรุง


8

คุณโปรดเปิดมุมมองเนวิเกเตอร์และขั้นตอนต่อไป

  1. (หน้าต่าง> แสดงมุมมอง> อื่น ๆ > ทั่วไป) และพบว่ามีโฟลเดอร์. setset ภายใต้โครงการของคุณขยายและเปิดไฟล์ "org.eclipse.wst.common.project.facet.core.xml" ให้เปิดไฟล์ ด้านล่างมีการเปลี่ยนแปลงและบันทึกไฟล์
  2. เปลี่ยนรุ่นโมดูลเว็บแบบไดนามิกในบรรทัดนี้เป็น 2.5 -
  3. เปลี่ยนเวอร์ชั่น Java ในบรรทัดนี้เป็น 1.5 หรือสูงกว่า -

5
คุณลืมที่จะบอกมุมมองที่คุณควรเลือกในโฟลเดอร์ "ทั่วไป" ในกล่องโต้ตอบ "แสดงมุมมอง" เป็นมุมมอง "นาวิเกเตอร์" หรือไม่
Roberto Linares

6

เปิด web.xml จากโครงสร้างโครงการ http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> Servlet 3.0 Web Application

และอัปเดตไฟล์ web.xml เช่น change version = "2.5"

และเปลี่ยนไฟล์ org.eclipse.wst.common.project.facet.core.xml จากไฟล์โครงการ. setset ของคุณทำตามขั้นตอนที่ 1 หน้าต่าง> แสดงมุมมอง> อื่น ๆ > ทั่วไป> นาวิเกเตอร์

  1. มีโฟลเดอร์. setset ภายใต้ไดเรกทอรีโครงการของคุณ

  2. เปลี่ยนเวอร์ชันโมดูลเว็บแบบไดนามิกในบรรทัดนี้เป็น 2.5 4. เปลี่ยนเวอร์ชัน Java ในบรรทัดนี้เป็น 1.5 หรือสูงกว่า

ตอนนี้รีเฟรชโครงการของคุณและรับการตั้งค่าให้ทำงานบนเซิร์ฟเวอร์ของคุณ

ติดตามบล็อกเพื่อดูวิธีแก้ไข http://scrapillars.blogspot.in/2014/02/how-to-change-project-facet-in-eclipse.html

การแก้ปัญหาที่ผลิตด้วยภาพประกอบภาพ


แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงค์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง
Micha

ผมได้ทำการเปลี่ยนแปลงในแฟ้ม pom.xml ดังแสดงในcrunchify.com/... อย่างไรก็ตามนั่นก็ไม่เพียงพอ ฉันต้องทำตามคำแนะนำเพื่อเปิดโฟลเดอร์. setset และแก้ไขไฟล์ or.eclipse.wst.common.project.facet.core.xml
แบล็คแจ็ค

6

ที่ดีที่สุดและง่ายขั้นตอนการแก้ไขปัญหานี้สำหรับฉันก็คือ 1) คุณสมบัติ -> แง่มุมโครงการ -> ยกเลิกการเลือก / ไม่เลือกกล่องกาเครื่องหมายของเว็บแบบไดนามิกโมดูล -> Apply 2) ตอนนี้เปลี่ยนไปเป็นรุ่นที่ต้องการสมัคร 3) ตรวจสอบแบบไดนามิกเว็บโมดูลกล่องกา .. - ตอนนี้คุณทำเสร็จแล้ว -


1
ทำงานได้ดี แต่ผลลัพธ์นี้คืออะไร
sg28

4

พวกเขาเป็นอีกวิธีหนึ่งในการแก้ไขปัญหานี้ (ลองดูหวังว่ามันจะช่วยคุณแก้ปัญหาของคุณได้)

ปัญหา

ไม่สามารถเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet dynamic web module 2.3 เป็น 3.0

สารละลาย

  1. ไปที่ที่ตั้งโครงการของคุณ (เช่น -M: / maven / todo)
  2. ไปที่. setup โฟลเดอร์
  3. ตรวจสอบไฟล์นี้: org.eclipse.wst.common.project.facet.core.xml
  4. เปิดไฟล์และเปลี่ยนคุณสมบัติ "jst.web" จาก 2.3 เป็น 3.0 และบันทึก
  5. คลิกขวาที่โครงการรีเฟรชโครงการและอัปเดต maven
  6. เสร็จสิ้น !!! ....

3

เคล็ดลับ web.xml ทำงานได้เพราะตอนนี้คุณกำลังบอก WTP อย่างชัดเจนว่าคุณกำลังใช้เวอร์ชันเซิร์ฟเล็ตเฉพาะนั้นโดยไม่คำนึงถึงสิ่งที่สนับสนุนคอนเทนเนอร์

ในกรณีของฉันฉันใช้การกำหนดค่าคำอธิบายประกอบในโครงการ Maven และฉันไม่มีไฟล์ web.xml ปรากฎว่าไม่มี web.xml WTP จะพิจารณาการพึ่งพา Maven ของคุณเพื่อพิจารณาว่าจะใช้เวอร์ชันใดของ Servlet ในกรณีของฉันฉันได้กำหนดสิ่งต่อไปนี้:

<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>7.0</version>
  <scope>provided</scope>
</dependency>

การเปลี่ยนเป็น 6.0 แก้ไขปัญหาและตอนนี้ใช้ Servlet 3.0 แทน 3.1 ซึ่งเป็นค่าเริ่มต้นสำหรับ JavaEE 7 เนื่องจากฉันต้องเปลี่ยนจาก Tomcat 8 เป็น Tomcat 7 Tomcat 7 รองรับเฉพาะโปรไฟล์เว็บ JavaEE 6 เท่านั้น ตอนนี้สิ่งต่าง ๆ ทำงานได้อย่างยอดเยี่ยม


3

ฉันมีปัญหาเดียวกันการแก้ไข web.xml เช่นเดียวกับการเปลี่ยนไฟล์ในโฟลเดอร์. setup เพียงอย่างเดียวไม่ได้ช่วยอะไร วิธีการแก้ปัญหาของฉันคือการชี้ปลั๊กอินคอมไพเลอร์ maven โดยตรงเพื่อใช้รุ่น java ที่ต้องการโดยการแก้ไข pom.xml:

  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>    
  </build> 

ตอนนี้รัน Maven-> อัพเดตโปรเจ็กต์และหลังจากนั้นคุณสามารถเปลี่ยนเวอร์ชันเซิร์ฟเล็ตในคุณสมบัติ -> โปรเจ็กต์ facets-> เวอร์ชันเว็บโมดูลแบบไดนามิกหรือตามที่เขียนไว้ก่อนหน้านี้โดยแก้ไข org.eclipse.wst.common.project.facet.core ด้วยตนเอง xml ในโฟลเดอร์การตั้งค่าของโครงการของคุณ


2

ในกรณีของฉัน web.xml ถูกอ้างอิงโดย dtd หลังจากที่ฉันเปลี่ยนสิ่งนี้เป็นการอ้างอิง xsd เหมือนกับที่โพสต์โดยซิดนีย์มันทำงานได้


2

ฉันมีปัญหาเดียวกันการลบโฟลเดอร์การตั้งค่าการแก้ไขปัญหา


1

โซลูชันของฉันสำหรับปัญหาที่ไม่อนุญาตให้ฉันเปลี่ยนเวอร์ชันของโปรเจ็กต์ facet Dynamic Web Module ใน Eclipse (Mars) คือ:

  • ปิดการใช้งาน Maven Nature
  • ตรวจสอบให้แน่ใจว่าเนมสเปซ web.xml ชี้ไปที่เวอร์ชันที่ถูกต้อง
  • เปิดใช้งาน Maven Nature อีกครั้ง
  • Maven »อัพเดตโครงการ (หรือกด Alt + F5)

1

ถ้าคำตอบจากซิดนีย์ยังคงไม่ช่วยลองด้านล่าง หลังจากทำตามคำตอบของซิดนีย์แล้วให้ไปที่ Properties> Projects Facets ยกเลิกการเลือก Dynamic Web Module แล้วเปลี่ยนเวอร์ชั่นให้ตรงกับ web.config ของคุณแล้วเลือกอีกครั้ง ใช้> บันทึกจากนั้นอัปเดต Maven

web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="Web_App_1" version="3.1">

<display-name>JavaServerFaces</display-name>

<!-- Change to "Production" when you are ready to deploy -->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>

<!-- Welcome page -->
<welcome-file-list>
    <welcome-file>jsfs/hello.xhtml</welcome-file>
</welcome-file-list>

<!-- JSF mapping -->
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map these files with JSF -->
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>jsfs/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>


1

ฉันลองคำตอบมากมายที่นี่ แต่ไม่มีคำตอบสำหรับฉันเลย จากนั้นฉันพบบทความเกี่ยวกับปัญหาของฉันที่นี่ที่นี่ฉันคิดว่าจะแบ่งปันที่นี่ด้วย

ด้านล่างนี้เป็นขั้นตอนโดยย่อ

  1. ตั้งค่าระดับความสอดคล้องของคอมไพเลอร์
  2. อัปเดตข้อมูลประกอบโครงการ
  3. อัพเดต JRE ที่ติดตั้งจากการกำหนดค่าตามความชอบ
  4. การเพิ่มการกำหนดค่าใน pom.xml เพื่อใช้ java 1.7 และสุดท้าย
  5. อัปเดตโครงการจาก Maven

1

สำหรับโครงการเว็บ maven eclipse การเปลี่ยนรุ่นโมดูลเว็บแบบไดนามิกจำเป็นต้องตรวจสอบสามแห่ง หากมีการใช้ eclipse และหลังจากที่คุณตรวจสอบสิ่งต่อไปนี้: 1) web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

2) Maven:

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>   ## ensure you have tomcat 7 not other version
</dependency>

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.0</version>
      <configuration>
            <source>1.7</source> ## at least 6
            <target>1.7</target>
      </configuration>
</plugin>

3) eclipse build path และเวอร์ชั่นคอมไพเลอร์คือ 1.7

คุณยังมีเครื่องหมายข้อผิดพลาดที่ maven:

cannot change version of project facet dynamic web module to 3.0 one or more constrants have not been satisfied

จากนั้นคุณสามารถ: ยกเลิกการเลือกโมดูลเว็บแบบไดนามิกและตรวจสอบอีกครั้ง ฉันคิดว่ามันเป็นเพราะ. set ของไฟล์ eclipse เสียหายอย่างใด เกี่ยวกับคำแนะนำคราวที่สองซึ่งเป็นรุ่นที่ดี


1

ฉันพบข้อผิดพลาดนี้เมื่อฉันพยายามแปลงโครงการ Java ทั่วไปเป็นโครงการMavenโครงการ

สิ่งที่ฉันทำคือกำหนดรุ่นคอมไพเลอร์ Java ที่โครงการของฉันต้องการ สำหรับโครงการของฉันเวอร์ชัน Java ขั้นต่ำคือ1.8เป็น

โดยการลดรุ่นลงไปเป็นอะไรที่ต่ำกว่า1.8IDE ของฉันจะเริ่มบ่นว่ามันไม่รู้จักกลุ่มของห้องสมุดที่นำเข้าดังนั้นฉันจึงกำหนดรุ่น Java ขั้นต่ำของฉันเป็น1.8

1. Right click your project
2. Go to Properties
3. Left hand-side panel, click "Project Facets"
4. For Java, set the version according to your minimum version

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ตรวจสอบให้แน่ใจว่าเวอร์ชันคอมไพเลอร์ Java ใช้เวอร์ชัน Java เดียวกับที่คุณตั้งไว้ใน Project Facets

1. Right click your project
2. Go to Porperties
3. Left hand-side panel, click "Java Compiler"
4. Make sure Java Compiler version is the same. 
5. If it is not the same, change the version. (Uncheck "Use compliance from execution environment' if needed to make the changes.

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากการเปลี่ยนแปลงข้อผิดพลาดควรได้รับการแก้ไข หากข้อผิดพลาดยังคงอยู่ให้คลิกขวาที่โครงการ -> Maven -> อัปเดตโครงการ


0

การอัพเดต maven หรือการอิมพอร์ตโครงการอีกครั้งไม่ได้ช่วยอะไร @ คำตอบของซิดนีย์นั้นถูกต้อง นอกจากนี้ฉันต้องสร้างโครงการในพื้นที่ทำงานที่แตกต่างกันดังที่กล่าวในJavaServer Faces 2.2 ต้องใช้ Dynamic Web Module 2.5 หรือใหม่กว่า


0

เปิดไฟล์ org.eclipse.wst.common.project.facet.core.xml และเปลี่ยนเวอร์ชัน jst.web เป็น 3.0 อัพเดต web.xml เป็นเวอร์ชัน 3.0 ด้วย บันทึกและอัพเดตโครงการ หวังว่านี่จะช่วยได้ ฉันกำลังใช้ Eclipse Juno


0

นี่เป็นรูปแบบของคำตอบของ pagurix แต่ใช้ Eclipse Mars

เปลี่ยนไฟล์ web.xml เป็น web.bak

ไม่สนใจข้อผิดพลาดเราจะสร้างมันขึ้นใหม่ในครั้งต่อไป

เข้าสู่คุณสมบัติของโครงการ -> แง่มุมของโครงการและตั้งค่า Dynamic Web Module version เป็นสิ่งที่คุณต้องการ Eclipse ตอนนี้อนุญาตให้คุณบันทึก

ตอนนี้คลิกขวาที่โครงการ เลือกเครื่องมือ Java EE -> สร้าง Stub Descriptor การปรับใช้

สิ่งนี้จะสร้าง web.xml ใหม่ด้วยรุ่นที่ต้องการ

เปิด web.xml ใหม่และคัดลอกข้ามส่วนหัว XML และแท็กเปิดเว็บแอพที่สมบูรณ์ไปยัง web.bak ดั้งเดิมของคุณลบ web.xml ใหม่และเปลี่ยนชื่อ web.bak กลับเป็น web.xml

เสร็จสิ้น


0

ของฉันอยู่Web Module 3.0ในweb.xmlแต่ในproperties>Dynamic Web Moduleมันเป็นใน3.1

ฉันเปลี่ยนเป็นweb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

หลังจากการเปลี่ยนแปลงนี้ให้ทำ: right click on project>Maven>Update Project...


0

ปัญหานี้กับรุ่นคลิกขวาที่ project-> properties-> Project Facets-> คลิกขวาที่ Dynamic Web Module-> ปลดล็อคมัน -> ไม่เลือก -> เลือก 2.5 version-> Apply-> Update maven


0

ฉันได้รับการแก้ไขปัญหาโดยการปรับเปลี่ยน web.xmlกับรุ่นที่ถูกต้อง, สถาน xsd และการปรับเปลี่ยน org.eclipse.wst.common.project.facet.core.xmlกับรุ่นที่ถูกต้องและทำปรับปรุง Maven


0

การอัพเดต maven ใช้งานได้สำหรับฉัน

เลือกโปรเจ็กต์จากนั้นกดALT + F5จากนั้นเลือกโปรเจ็กต์คลิกตกลง


0

ฉันมีอาการเช่นเดียวกันกับการรักษาที่แตกต่างกัน ฉันพยายามอัปเกรด 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 ที่ติดตั้งตั้งแต่หนึ่งตัวขึ้นไปไม่สามารถทำให้โครงการเสียหายได้คุณแน่ใจหรือว่าต้องการดำเนินการต่อ" สิ่งนี้ทำให้ฉันต้องทำบ่อยครั้งมากขึ้น แต่ก็ไม่เกิดความเสียหาย

  1. อัพเกรด JDK จาก 1.7 เป็น 1.8 ใน POM, คอมไพเลอร์ Eclipse และ Eclipse Project Facets
  2. อัพเดตการพึ่งพา 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 ทางอ้อมซึ่งช่วย


0

ฉันมีปัญหาเดียวกัน - ฉันเพิ่งลบโปรเจ็กต์ออกจากเวิร์กสเปซของฉันจากนั้นล้างข้อมูล "ไฟล์ / โฟลเดอร์ eclipse เช่น. project, .set, ฯลฯ การตั้งค่า ฯลฯ ) จากนั้นนำเข้าโครงการ maven อีกครั้งทำงานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.