คำตอบ:
คุณสามารถทำได้เช่นนี้:
มันจะสร้างโฟลเดอร์WEB-INFในsrc / main / webappและweb.xmlในนั้น
web.xml
ไฟล์ที่ไม่จำเป็น คุณควรแก้ไขปัญหานี้ในเครื่องมือสร้าง (เช่น maven) แทน
นี่เป็นข้อผิดพลาด maven มันบอกว่ามันเป็นที่คาดหวังว่าไฟล์ web.xml <packaging>war</packaging>
ในโครงการของคุณเพราะมันเป็นโปรแกรมเว็บตามที่ระบุโดย อย่างไรก็ตามสำหรับเว็บแอปพลิเคชันเมื่อเร็ว ๆ นี้ไฟล์ web.xml เป็นทางเลือกโดยสิ้นเชิง Maven ต้องติดตามข้อตกลงนี้ เพิ่มสิ่งนี้ลงใน Maven ของคุณpom.xml
เพื่อให้ Maven ตามทันและคุณไม่จำเป็นต้องเพิ่มสิ่งที่ไร้ประโยชน์web.xml
ให้กับโครงการของคุณ:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
นี่เป็นทางออกที่ดีกว่าการเพิ่มที่ว่างเปล่าweb.xml
เพราะวิธีนี้ผลิตภัณฑ์ขั้นสุดท้ายของคุณยังคงสะอาดอยู่คุณเพียงแค่เปลี่ยนพารามิเตอร์การสร้างของคุณ
สำหรับ maven เวอร์ชันปัจจุบันเพิ่มเติมคุณสามารถใช้เวอร์ชันที่สั้นกว่า:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Interface WebApplicationInitializer
คำตอบนี้ไปใช้เป็นแนวทางที่ถูกต้อง มันเป็นวิธีที่สมเหตุสมผลในการแก้ปัญหานี้ - ไม่มีจุดเพิ่มweb.xml
หลังจากทำตามขั้นตอนเพื่อมีชีวิตอยู่โดยปราศจากมัน!
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
พอเพียงแทนการตั้งค่าการกำหนดค่าปลั๊กอินเพิ่มเติมอย่างละเอียด
หากคุณมี web.xml อยู่แล้วภายใต้ / src / main / webapp / WEB-INF แต่คุณยังได้รับข้อผิดพลาด "web.xml หายไปและตั้งค่าเป็นจริง" คุณสามารถตรวจสอบว่าคุณรวม/ src / main / webappใน แหล่งที่มาของโครงการของคุณ
นี่คือขั้นตอนที่คุณสามารถทำตาม:
(ฉันตรวจสอบสิ่งนี้ด้วย Eclipse Mars)
หากคุณใช้ Spring Tool Suite ตัวเลือกสำหรับการสร้าง Deployment Descriptor Stub จะถูกย้ายภายใต้ Java EE Tools ดังนั้นคุณ:
สิ่งนี้จะสร้างไฟล์ web.xml ภายในโฟลเดอร์ src / main / webapp / WEB-INF / และลบข้อผิดพลาดออกจากไฟล์ pom.xml ของ Maven
ผมมีปัญหาเดียวกัน. หลังจากเรียนและ googling ฉันได้แก้ไขปัญหาของฉันแล้ว:
คลิกขวาที่โฟลเดอร์โครงการไปที่เลือกJava EE Tools
Generate Deployment Descriptor Stub
นี้จะสร้างในโฟลเดอร์web.xml
src/main/webapp/WEB-INF
นอกจากนี้คุณยังสามารถทำสิ่งนี้ซึ่งน้อย verbose
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Eclipse รู้จักwebapp
ไดเรกทอรีเริ่มต้นที่ไม่ถูกต้อง maven-war-plugin
ดังนั้นเราจึงควรกำหนดอย่างชัดเจนได้โดย
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webappDirectory>src/main/webapp</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
เมื่อบันทึกการตั้งค่านี้ข้อผิดพลาดจะไม่เกิดขึ้นหากลบออก (ฉันไม่สามารถอธิบายได้ว่าทำไม)
ฉันมีปัญหาเดียวกันแม้ว่าฉันมีโฟลเดอร์ที่ถูกต้อง'src/main/webapp/WEB-INF/'
web.xml
ปัญหาหายไปหลังจากฉันสร้างการกำหนดค่า (maven-> eclipse) อีกครั้งด้วย
Maven build..
การดำเนินการmvn eclipse:clean eclipse:eclipse
จากนั้นฉันก็ใช้Maven -> Update Project
ตัวเลือกเฉพาะปลั๊กอิน (eclipse-> maven)
ฉันพบปัญหานี้ใน eclipse เท่านั้นทุกอย่างทำงานได้ดีในบรรทัดคำสั่ง Maven และไฟล์ web.xml ของฉันมีอยู่ มันเป็นโครงการที่ครบกำหนดแล้ว (ถูกปรับใช้แล้วในการผลิต) ที่ได้รับผลกระทบ ปัญหาของฉันเชื่อมโยงกับข้อมูลเมตาของ eclipse มีปัญหากับหนึ่งในไฟล์ใน. setset / folder ของฉันโดยเฉพาะ org.eclipse.wst.common.component มีการเปลี่ยนแปลง ฉันสามารถกู้คืนไฟล์นี้เป็นเวอร์ชันก่อนหน้าซึ่งแก้ไขปัญหาในกรณีของฉัน
โปรดทราบว่าคำตอบของ Yuci ไม่ได้ผลสำหรับฉันเมื่อฉันพยายามคลิกที่ Deployment Assembly ในคุณสมบัติ eclipse ฉันพบข้อผิดพลาดว่า "หน้าแสดงในปัจจุบันมีค่าที่ไม่ถูกต้อง"
สำหรับโครงการที่มี web.xml แสดง โครงการ -> คุณสมบัติ -> ชุดการปรับใช้ซึ่งคุณสามารถเพิ่มโฟลเดอร์ src / main / webapp บันทึกการเปลี่ยนแปลง. ทำความสะอาดโครงการเพื่อไปต่อ
สำหรับโปรเจ็กต์ที่มี web.xml ไม่แสดง ตั้งค่า failOnMissingWebXml เป็น false ใน pom.xml ภายใต้แท็กคุณสมบัติ
ทำเช่นนี้:
ไปและคลิกขวาที่ตัวให้คำอธิบายการปรับใช้และคลิกสร้างตัวอธิบายการปรับใช้
มันไม่สมเหตุสมผลเลยที่จะสร้าง web.xml เพียงแค่ต้องการ elcipse แม้ว่ามันจะไม่จำเป็นก็ตาม นี่เป็นกรณีถ้าคุณมี conatiner ของ servlet ฝังอยู่หรือไม่ใช้ xml cfg เหมือน spring-boot คุณเพียงปรับใช้ JavaEE (สิ่งที่ไร้ประโยชน์) ใน eclipse ในระดับโครงการหรือทั่วโลก
Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
เลือกโครงการของคุณและเลือกตัวเลือก "ตัวอธิบายการปรับใช้" จากนั้นเลือก "สร้างตัวอธิบายการปรับใช้ขั้นต้น"
ขั้นตอนของ: เลือกโครงการของคุณและเลือกตัวเลือก "ตัวให้คำอธิบายการปรับใช้" จากนั้นเลือก "สร้างส่วนการอธิบายการปรับใช้" ทำงานได้ดี ปัญหาคือมันไม่ได้เป็นกรณีที่เราต้องการ web.xml ดังนั้นจึงเป็นการดีที่สุดที่จะผนวกเท็จกับ pom.xml
คลิกขวาที่ project --> New --> Other --> Standard Deployment Descriptor(web.xml)
จากนั้นกดถัดไปมันจะสร้างWEB-INF
โฟลเดอร์พร้อมweb.xml
ไฟล์ภายใน
แค่นั้นแหละ
สร้างโฟลเดอร์ WEB-INF ใน src / webapp และรวมหน้า web.xml ไว้ในโฟลเดอร์ WEB-INF
ลบไฟล์ออกจาก-web / .setting & -admin / .setting
คลิกขวาที่โครงการไปMaven -> โครงการปรับปรุง ...แล้วตรวจสอบกองทัพปรับปรุงภาพนิ่ง / ข่าวจากนั้นคลิกตกลง มันจบแล้ว!
maven-war-plugin
คุณจำเป็นต้องเพิ่ม นี่เป็นปลั๊กอินโดยนัยซึ่งค่าเริ่มต้นสำหรับคุณสมบัติการกำหนดค่านั้นเป็นจริง คุณต้องประกาศอย่างชัดเจนและตั้งค่าคุณสมบัติการกำหนดค่าเป็นเท็จ ดูเพิ่มเติมได้ที่นี่ หรือคุณสามารถเพิ่ม web.xml ที่ว่างเปล่าได้