Элемент веб-приложения должен быть объявлен (Servlet 4.0)
Я пытался использовать пространство имен Servlet 4.0. Приложение работало хорошо, но IDEA обнаруживает ошибку: "Веб-приложение Element" должно быть объявлено ".
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_4_0.xsd"
version="4.0">
...
...
</web-app>
Снимок(я не могу публиковать изображения напрямую.)
Когда я изменил версию на 3.1, она работала хорошо:
<web-app 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"
version="3.1">
Согласно Java EE: XML-схемы для дескрипторов развертывания Java EE # Использование схем Java EE:
Все Java EE 7 и более новые схемы дескрипторов развертывания имеют общее пространство имен http://xmlns.jcp.org/xml/ns/javaee/. Каждый документ схемы содержит атрибут версии, который содержит версию спецификации. Например, документ схемы XML для спецификации сервлета содержит значение атрибута версии "3.1", относящееся к конкретной версии спецификации, а также сам документ схемы.
Является version="4.0"
не поддерживается? Я использую IntelliJ IDEA 2017.2.5 + javax.servlet-api 4.0 + Apache Tomcat v9.0.1.
Обновлено: я нашел пример web.xml(в apache-tomcat-9.0.1/webapps/examples/WEB-INF/web.xml
):
<web-app 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_4_0.xsd"
version="4.0"
metadata-complete="true">
3 ответа
Я опаздываю на вечеринку, но у меня есть возможное решение, которое еще не было предложено. Из того, что я прочитал выше, проблема может заключаться в том, что URL-адреса используют план http вместо https. Некоторые IDE отказываются загружать ресурсы через незащищенное соединение.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns="https://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee
https://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID"
version="4.0">
IntelliJ не находит схемы, потому что они недоступны в указанных местах. Загрузите отсюда следующие схемы: - web-app_4_0.xsd - web-common_4_0.xsd - web-fragment_4_0.xsd Затем выберите http://xmlns.jcp.org/xml/ns/javaee, нажмите Alt+Enter и выберите " Настроить внешний ресурс вручную "и выбрать web-app_4_0.xsd в поле файла.
Я думаю, что это известная ошибка даже в самых последних версиях IntelliJ IDEA (хотя они утверждают, что в 2017.3 окончательно готов к Java EE8 готов). По крайней мере, следующая ошибка все еще "не решена": https://youtrack.jetbrains.com/issue/IDEA-182745