Odpowiedzi:
Możesz to również zrobić w ten sposób:
Wygeneruje WEB-INF folder w src / main / webapp oraz web.xml w nim.
web.xml
plik. Zamiast tego powinieneś rozwiązać ten problem w narzędziu do budowania (np. Maven).
To jest błąd maven. Mówi, że oczekuje pliku web.xml w twoim projekcie, ponieważ jest to aplikacja internetowa, na co wskazuje <packaging>war</packaging>
. Jednak w przypadku najnowszych aplikacji internetowych plik web.xml jest całkowicie opcjonalny. Maven musi dogonić tę konwencję. Dodaj to do swojego mavena, pom.xml
aby maven nadrobił zaległości i nie musisz dodawać bezużytecznych elementów web.xml
do swojego projektu:
<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>
Jest to lepsze rozwiązanie niż dodanie pustego, web.xml
ponieważ w ten sposób produkt końcowy pozostaje czysty, a jedynie zmieniasz parametry kompilacji.
W przypadku bardziej aktualnych wersji Mavena możesz również użyć krótszej wersji:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Interface WebApplicationInitializer
odpowiedzi, ta odpowiedź jest właściwym podejściem. To rozsądny sposób na rozwiązanie tego problemu - nie ma sensu dodawać web.xml
kolejnych kroków, aby bez tego żyć!
<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>
wystarczy zamiast bardziej szczegółowych ustawień konfiguracji wtyczki.
Jeśli masz już plik web.xml w / src / main / webapp / WEB-INF, ale nadal pojawia się błąd „Brak pliku web.xml i jest ustawiony na wartość prawda”, możesz sprawdzić, czy włączyłeś / src / main / webapp w źródło Twojego projektu.
Oto kroki, które możesz wykonać:
(Sprawdziłem to w Eclipse Mars)
Jeśli używasz Spring Tool Suite, opcja Generate Deployment Descriptor Stub jest przenoszona do Java EE Tools, więc:
Spowoduje to utworzenie pliku web.xml w folderze src / main / webapp / WEB-INF / i oczywiście usunięcie błędu z pliku pom.xml Mavena.
Mam ten sam problem. Po nauce i googlowaniu rozwiązałem problem:
Kliknij prawym przyciskiem myszy folder projektu, przejdź do Java EE Tools
, wybierz Generate Deployment Descriptor Stub
. Spowoduje to utworzenie web.xml
w folderze src/main/webapp/WEB-INF
.
Możesz też zrobić to mniej szczegółowo
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Eclipse rozpoznaje nieprawidłowy webapp
katalog domyślny . Dlatego powinniśmy to jasno określić do 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>
Po zapisaniu tego ustawienia błąd nigdy nie wystąpi po jego usunięciu. (Nie potrafię wyjaśnić dlaczego.)
Miałem ten sam problem, mimo że miałem 'src/main/webapp/WEB-INF/'
folder z poprawnym web.xml
.
Problem zniknął po ponownym utworzeniu konfiguracji (maven-> eclipse) z
Maven build..
wykonaniemmvn eclipse:clean eclipse:eclipse
Następnie Maven -> Update Project
dodałem (eclipse-> maven) opcje specyficzne dla wtyczki.
Napotkałem ten problem tylko w eclipse, wszystko działało dobrze w wierszu poleceń Maven, a mój plik web.xml istniał. To był dojrzały projekt (już wdrożony w produkcji), na który miało to wpływ. Mój problem był związany z metadanymi zaćmienia. Wystąpił problem z jednym z plików w moim folderze .settings /, w szczególności zmieniono składnik org.eclipse.wst.common.com. Udało mi się przywrócić ten plik do jego poprzedniej wersji, co rozwiązało problem w moim przypadku.
Zauważ, że odpowiedź Yuciego nie zadziałała dla mnie, kiedy próbowałem kliknąć Deployment Assembly we właściwościach zaćmienia, otrzymałem błąd o treści „aktualnie wyświetlana strona zawiera nieprawidłowe wartości”.
Zrób to:
Idź i kliknij prawym przyciskiem myszy Deployment Descriptor i kliknij Generate Deployment Descriptor Stub.
Nie ma sensu tworzenie pliku web.xml po prostu elcipse tego chce, nawet jeśli nie ma takiej potrzeby. Dzieje się tak, jeśli masz osadzony serwlet conatiner lub żyjesz bez xml cfg, tak jak robi to spring-boot. Po prostu dający się porównać JavaEE (bezużyteczne rzeczy) w zaćmieniu na poziomie projektu lub globalnym
Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK
Wybierz projekt i wybierz opcję „Deployment Descriptor”, a następnie wybierz „Generate Deployment Descriptor stub”
Krok: Wybierz projekt i wybierz opcję „Deployment Descriptor”, a następnie wybierz opcję „Generate Deployment Descriptor stub”. Problem polega na tym, że nie zawsze jest tak, że potrzebujemy web.xml, dlatego najlepiej jest dodać false do pom.xml
Kliknij prawym przyciskiem myszy project --> New --> Other --> Standard Deployment Descriptor(web.xml)
następnie naciśnij Dalej , utworzy WEB-INF
folder z web.xml
plikiem w środku.
Gotowe.
Utwórz folder WEB-INF w src / webapp i umieść stronę web.xml w folderze WEB-INF, a następnie
maven-war-plugin
. Jest to niejawna wtyczka, w której domyślną wartością tej właściwości konfiguracyjnej jest prawda. Musisz to jawnie zadeklarować i ustawić właściwość konfiguracji na false. Zobacz więcej tutaj . Lub możesz dodać pusty plik web.xml