web.xml bị thiếu và <failOnMissingWebXml> được đặt thành đúng


142

Xem xét:

Nhập mô tả hình ảnh ở đây

Khi tôi tạo một dự án Maven đơn giản trong Eclipse, tôi gặp lỗi này:

web.xml bị thiếu và <failOnMissingWebXml>được đặt thành đúng

Làm thế nào tôi có thể khắc phục vấn đề này?


5
Bạn cần thêm maven-war-plugin. Đây là một plugin ẩn trong đó giá trị mặc định cho thuộc tính cấu hình đó là đúng. Bạn cần khai báo rõ ràng và đặt thuộc tính cấu hình thành false. Xem thêm tại đây . Hoặc bạn có thể thêm một tệp
webDB

Câu trả lời:


180

Bạn có thể làm điều đó cũng như thế này:

  1. Nhấp chuột phải vào Deployment Descriptor trong Project Explorer .
  2. Chọn Tạo sơ khai mô tả triển khai .

Nó sẽ tạo thư mục WEB-INF trong src / main / webapp và một tệp web.xml trong đó.

nhập mô tả hình ảnh ở đây


39
Tôi không khuyên bạn nên thêm mã soạn sẵn vào mã, chỉ vì công cụ xây dựng của bạn gặp lỗi.
Martijn Burger

1
@MartijnBurger Bạn có thể khai sáng cho chúng tôi về những hậu quả có thể xảy ra của vụ hack nói trên không và nếu có thể cũng có thêm một số lựa chọn thay thế khác? - sẽ giúp các lập trình viên mới làm quen như tôi. Cảm ơn.
Sendhilkumar Alalasundaram 14/03/2016

7
Xem câu trả lời của tôi dưới đây để thay thế. Giải pháp trên không sai, chỉ là bạn nên luôn cố gắng làm cho sản phẩm cuối cùng của mình sạch nhất có thể. Với giải pháp trên, sản phẩm cuối cùng của bạn sẽ kết thúc với một web.xml tệp không cần thiết . Thay vào đó, bạn nên khắc phục sự cố này trong công cụ xây dựng (ví dụ: maven).
Martijn Burger

Bạn cũng có thể tham khảo: eggylife.co.uk/2009/12/20/ Lời
Satyendra

điều này sẽ thêm tệp không cần thiết trong dự án của bạn và điều khác là phê duyệt web.xml đã cũ. nếu bạn muốn xóa lỗi này thì chỉ cần cập nhật, lỗi maven sẽ biến mất
jitendra varshney

393

Đây là một lỗi maven. Nó nói rằng nó đang mong đợi một tệp web.xml trong dự án của bạn bởi vì nó là một ứng dụng web, như được chỉ ra bởi <packaging>war</packaging>. Tuy nhiên, đối với các ứng dụng web gần đây, tệp web.xml là hoàn toàn tùy chọn. Maven cần phải bắt kịp quy ước này. Thêm phần này vào maven của bạn pom.xmlđể cho maven bắt kịp và bạn không cần thêm một thứ vô dụng web.xmlvào dự án của mình:

<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>

Đây là một giải pháp tốt hơn so với việc thêm một sản phẩm nào web.xmlvì cách này sản phẩm cuối cùng của bạn luôn sạch sẽ, bạn chỉ đang thay đổi các tham số xây dựng của mình.

Đối với các phiên bản hiện tại của maven, bạn cũng có thể sử dụng phiên bản ngắn hơn:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

28
Câu trả lời này hợp lý hơn những câu khác.
smwikipedia

7
Nếu bạn đang sử dụng môi trường Servlet 3.0+ và có bất kỳ triển khai nào Interface WebApplicationInitializerthì câu trả lời này là cách tiếp cận đúng. Đó là cách hợp lý để giải quyết vấn đề này - không cần phải thêm vào web.xmlsau khi thực hiện các bước để sống mà không có nó!
Geeb

4
Đây là một câu trả lời tốt hơn so với việc tạo một tệp
webDB

1
Hoạt động ngay cả khi không có Maven> Cập nhật dự án. Vì vậy, nó không cần thiết.
May mắn

13
Vui lòng xem xét cập nhật câu trả lời của bạn cho cấu hình ngắn hơn, như được đề xuất dưới đây . Bao gồm <properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>đủ các thay vì các cài đặt cấu hình plugin dài dòng hơn.
Olivier Cailloux

32

Nếu bạn đã có web.xml dưới / src / main / webapp / WEB-INF nhưng bạn vẫn nhận được lỗi "web.xml là mất tích và được thiết lập là true", bạn có thể kiểm tra xem bạn đã bao gồm / src / main / webapp trong nguồn dự án của bạn.

Dưới đây là các bước bạn có thể làm theo:

  1. Bạn có thể kiểm tra điều này bằng cách nhấp chuột phải vào dự án của bạn và mở hộp thoại Thuộc tính của nó và sau đó "Triển khai hội", nơi bạn có thể thêm Thư mục / src / main / webapp. Lưu cài đặt, và sau đó,
  2. Chuyển đến menu Eclipse Project -> Clean ... và dọn sạch dự án và lỗi sẽ biến mất.

(Tôi đã xác minh điều này với Eclipse Mars)


Trải qua vấn đề tương tự trong "Sao Hỏa Eclipse" và giải pháp được mô tả của bạn hoạt động hoàn hảo! Cảm ơn
Hartmut P.

đã không làm việc cho tôi ... Tôi đã có những thư mục đó và thậm chí tôi đã thử thiết lập web.xml thiếu false. Nó không hoạt động ....
Baradwaj Aryasomayajula 18/03/2016

19

Nếu bạn sử dụng Spring Tool Suite, tùy chọn Tạo Stub Descriptor Stub được di chuyển trong Java EE Tools, vì vậy bạn:

  1. Nhấp chuột phải vào dự án của bạn
  2. Chọn Công cụ Java EE
  3. Chọn tùy chọn Tạo mô tả triển khai mô tả

Điều này sẽ tạo tệp web.xml trong thư mục src / main / webapp / WEB-INF / và tất nhiên sẽ xóa lỗi khỏi tệp pom.xml của Maven.

nhập mô tả hình ảnh ở đây


16

Tôi có cùng một vấn đề. Sau khi nghiên cứu và googling, tôi đã giải quyết vấn đề của mình:

Nhấp chuột phải vào thư mục dự án, đi đến Java EE Tools, chọn Generate Deployment Descriptor Stub. Điều này sẽ tạo ra web.xmltrong thư mục src/main/webapp/WEB-INF.


3
Tôi không khuyên bạn nên thêm mã soạn sẵn vào mã, chỉ vì công cụ xây dựng của bạn gặp lỗi.
Martijn Burger

16

Bạn cũng có thể làm điều này ít dài dòng hơn

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>

Giải pháp thanh lịch nhất IMHO. Xem tài liệu (và một lỗi nhật thực cũ đã ngăn giải pháp này hoạt động, hiện đã được giải quyết).
Olivier Cailloux

9

Eclipse nhận ra webappthư mục mặc định không chính xác . Vì vậy, chúng ta nên thiết lập rõ ràng bằng cách 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>

Sau khi lưu cài đặt này, lỗi sẽ không bao giờ xảy ra nếu xóa nó. (Tôi không thể giải thích tại sao.)


3

Tôi đã có cùng một vấn đề, mặc dù tôi đã có 'src/main/webapp/WEB-INF/'thư mục chính xác web.xml.

Vấn đề biến mất sau khi tôi tạo lại cấu hình (maven-> nhật thực) với Maven build..tôi đã thực thimvn eclipse:clean eclipse:eclipse

Và sau đó tôi đã sử dụng Maven -> Update Projectđể thêm các tùy chọn cụ thể cho plugin (nhật thực-> maven).


Tương tự ở đây, mặc dù tôi đã sử dụng thiết lập lại git - ĐẦU CHÍNH
Markus Barthlen

Cảm ơn bạn, điều này đã giúp tôi quá. Nhấp chuột phải -> Maven -> Cập nhật dự án
trebor

2

Tôi chỉ gặp phải vấn đề này trong nhật thực, mọi thứ đều hoạt động tốt trong dòng lệnh Maven và tệp web.xml của tôi tồn tại. Đó là một dự án trưởng thành (đã được triển khai trong sản xuất) đã bị ảnh hưởng. Vấn đề của tôi gắn liền với siêu dữ liệu nhật thực. Có một vấn đề với một trong các tệp trong thư mục .sinstall / của tôi, cụ thể là org.eclipse.wst.common.component đã bị thay đổi. Tôi đã có thể khôi phục tập tin này về phiên bản trước đó, điều này đã giải quyết vấn đề trong trường hợp của tôi.

Lưu ý rằng câu trả lời của Yuci không có tác dụng với tôi, khi tôi cố gắng nhấp vào Triển khai hội trong các thuộc tính nhật thực, tôi đã gặp một lỗi cho biết "trang hiện đang hiển thị chứa các giá trị không hợp lệ."


Tôi đã gặp tình huống tương tự và phải khôi phục tệp org.eclipse.wst.common.component từ thư mục .sinstall / của tôi và dự án của tôi hoạt động ngay bây giờ, rõ ràng nội dung của thành phần đã bị xóa, vì vậy nó không phải là đường dẫn đến web của tôi. tập tin xml. Ngoài ra, khi tôi cố mở Hội triển khai trong các thuộc tính nhật thực cũng gặp lỗi tương tự: "trang hiện đang hiển thị chứa các giá trị không hợp lệ." Tôi thấy câu trả lời này hơi muộn nhưng đây là cách tôi giải quyết nó. Câu trả lời tuyệt vời btw.
Jorge Valdés

2

Đối với Dự án có web.xml hiện tại Dự án -> Thuộc tính -> Hội triển khai, nơi bạn có thể thêm Thư mục src / main / webapp. Lưu thay đổi. Làm sạch dự án để có được đi.

Đối với Dự án có tệp web.xml không có mặt Đặt failOnMissingWebXml thành false trong pom.xml dưới thẻ thuộc tính.


1

Làm cái này:

Đi và nhấp chuột phải vào Deployment Descriptor và nhấp vào Tạo Stub Descriptor Stub.


0

Không có ý nghĩa gì khi tạo một tệp web.xml chỉ cần elcipse muốn nó, thậm chí không cần. Đây là trường hợp nếu bạn có nhúng conatiner servlet hoặc sống mà không có xml cfg như spring-boot. Bạn chỉ cần JavaEE (công cụ vô dụng) trong nhật thực ở cấp dự án hoặc toàn cầu

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK

0

Chọn dự án của bạn và chọn tùy chọn "Mô tả triển khai" và sau đó chọn "Tạo sơ khai mô tả triển khai"


0

Bước: Chọn dự án của bạn và chọn tùy chọn "Bộ mô tả triển khai" và sau đó chọn "Tạo sơ khai mô tả triển khai" hoạt động tốt. Vấn đề là không phải lúc nào chúng ta cũng cần web.xml, vì vậy tốt nhất là nối sai vào pom.xml


0

Nhấp chuột phải vào project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

sau đó nhấn Next nó sẽ tạo WEB-INFthư mục với một web.xmltập tin bên trong.

2

Thế là xong.


-1

Tạo thư mục WEB-INF trong src / webapp và bao gồm trang web.xml trong thư mục WEB-INF sau đó



-1

Nhấp chuột phải vào dự án, đi đến Maven -> Cập nhật dự án ... , sau đó kiểm tra Cập nhật lực lượng của Ảnh chụp / Phát hành , sau đó bấm Ok . Xong rôi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.