Ответ 1
Удалите строку DOCTYPE, это означает, что xsd предназначен для замены. У меня была такая же проблема, и только это сработало.
Объявление моего веб-приложения в моем web.xml:
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
И затмение жалуется на все 4 атрибута, вот одна жалоба Eclipse:
Attribute "version" must be declared for element type "web-app"
Почему Eclipse жалуется на эти атрибуты? Я здесь что-то не так?
Удалите строку DOCTYPE, это означает, что xsd предназначен для замены. У меня была такая же проблема, и только это сработало.
Попробуйте сделать так:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" >
Валидатор Eclipse очень строгий с порядком.
У меня была та же проблема. Я попробовал другое расположение схемы, и это сработало для меня. Вместо
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
попробуйте использовать
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
Также установите версию как "3.0"
.
Разве вы не забыли эту строку в вашем XML файле?:
<?xml version="1.0" encoding="ISO-8859-1"?>
Ваш файл должен начинаться следующим образом:
<?xml version="1.0" encoding="ISO-8859-1"?>
<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_2_5.xsd" version="2.5">
Если он не работает и обновляет ваш проект,
Обратитесь к этой ссылке oracle.com, чтобы узнать, что было объявлено с помощью Java EE 7 (при условии, что это то, с чем мы работаем), Состояние связи
Все новые схемы находятся в http://xmlns.jcp.org/xml/ns/javaee/Пространство имен.
Пространство имен java.sun
не стало java.oracle
, вместо этого оно было сохранено Процесс сообщества Java (JCP). Следовательно, все пространства имен должны указывать на xmlns.jcp.org, как также указано в документах Java EE 7.
Теперь, когда мы развертываем веб-приложение (и, следовательно, необходимо определить web.xml), сначала мы должны знать, что мы намерены делать.
Скажем, мы работаем с Apache Tomcat V8. Если мы читаем docs здесь, мы узнаем, что он поставляется вместе с пакетом Servlet 3.1. Итак, я бы предпочел реализацию Servlet 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">
</web-app>
Надеюсь, что это ответит на вопрос.
Я изменил объявление из
http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" >
к следующему, и он работал как шарм. Теперь никаких ошибок, отображаемых в web.xml
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >
Просто удалите DOCTYPE. И его работы прекрасны.