Поддельное предупреждение Eclipse для web.xml: «Для документа не обнаружены грамматические ограничения (DTD или XML-схема)»

Верх моего файла web.xml выглядит так:

<?xml version = "1.0" encoding = "UTF-8"?>
<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_5.xsd"
    version = "2.5">

Но я все еще получаю предупреждение от Eclipse (Ganymede) о том, что XML-схема не обнаружена, и о нарушениях схемы не предупреждают. Другие файлы XML в моем проекте (например, файлы конфигурации Spring Framework) не имеют предупреждения и дают правильные предупреждения о нарушениях схемы.

Как мне заставить работать проверку схемы и, надеюсь, исчезнуть предупреждение? Сервер работает правильно. Это просто проблема IDE.

вы также можете увидеть мой ответ по аналогичному вопросу о. По сути, просто напишите свой xml, чтобы он соответствовал требуемому правилу

Damilola 15.08.2014 15:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
34
1
57 395
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Возможно, попробуем:

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

Вместо:

http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd

Также отсутствует <!DOCTYPE ...>:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE xml>
<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/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version = "2.5">
  <!-- ... -->
</web-app>

Вам также необходимо изменить xmlns с: - java.sun.com/xml/ns/j2ee на: - java.sun.com/xml/ns/javaee

Peter Jamieson 26.06.2012 12:01
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
Thorbjørn Ravn Andersen 29.01.2013 14:44

... И не забудьте "проверить" файл с нарушением после внесения изменений.

Richard Sitze 22.03.2013 20:46

Добавьте этот <!DOCTYPE ...> в свой xml файл. Поместите пожалуйста под <?xml ...>:

<!DOCTYPE ??? PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

??? = Ваш корневой элемент, теперь, если имя вашего подэлемента использует зарезервированное слово html, вы можете обнаружить некоторые ошибки, все, что вам нужно сделать, это изменить их на незарезервированное слово.

Например:
Если ваш текущий подэлемент - <img>, измените его на <pic> ...

Это файл web.xml, а не файл xhtml.

Brian Deacon 13.11.2009 21:36

Я тоже ненавижу это предупреждение. Особенно потому, что он появляется в файлах XML, которые вы не писали, но по какой-то причине появляются в вашем проекте (если вы используете MAVEN, это ад).

В Eclipse 3.5+ вы можете легко удалить это правило проверки. Перейдите в Настройки -> XML -> ФАЙЛЫ XML -> Проверка и выберите «игнорировать».

Возможно, вам также придется выполнить Project -> Clean, чтобы предупреждения проверки исчезли.

alt text

Я широко использую Maven и не получаю эту ошибку в файлах Maven, если они не находятся в целевом каталоге. В этом случае лучше добавить правило для отключения проверки в целевом каталоге, чем игнорировать ошибку.

HDave 23.02.2012 08:43

Это не решает проблему, просто скрывает симптом.

Thorbjørn Ravn Andersen 29.01.2013 14:41

Я бы НЕ делал это Предпочтения | XML | XML-файлы | Проверка в Eclipse, поскольку это только маскирует / скрывает ошибку, это не решать ошибка. Если вы используете Eclipse только для создания приложений Android, тогда это «решение» приемлемо. Но если вы используете Eclipse для создания других Java-проектов - JSF и т. д. - он сломает эти проекты, если проверка XML «выключена». Так что будь осторожен. Реальное решение для Oracle, Google и IBM - обновить свое программное обеспечение с помощью обновленных DTD и схем.

ChuongPham 18.01.2014 22:20

Нам постоянно приходится иметь дело с плохо сформированными сторонними файлами, особенно с файлами xml. Да, было бы неплохо, если бы они исправили их, но они этого не делают, поэтому мне просто нужно отключить бессмысленные предупреждения, чтобы я мог видеть важные, реальные предупреждения. Это исправление действительно помогло мне, спасибо.

Chris Mills 31.03.2017 17:19

Очистите кеш для сохраненных файлов проверки.

Окно> Настройки> Общие> Сетевые подключения> Кэш, затем удалите все. Теперь проверьте файл и посмотрите, проясняет ли это ситуацию.

Мне это понравилось, и очистка кеша для проверки была единственным способом вернуть его в нормальное состояние. Был найден совет по очистке грязного кеша здесь.

Это сработало для меня. Похоже, в какой-то момент мой Eclipse кэшировал поддельную копию java.sun.com/xml/ns/javaee/web-app_2_5.xsd, из-за которой все мои файлы web.xml не прошли проверку.

Brill Pappin 03.11.2011 18:09

Это сработало и для меня, когда мои файлы bean-компонентов Spring начали выдавать эту ошибку.

HDave 23.02.2012 08:41

Если у вас такое же (ошибочное) сообщение об ошибке, потому что ваш XML-редактор не нашел XSD-файл, вы можете добавить запись в каталог.

Вы выбираете URL-адрес, указанный для схемы, для объявления типа

xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee 
                      http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"

URL-адрес файла схемы (http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd) указан для пространства имен http://java.sun.com/xml/ns/j2ee. Теперь вы можете перенаправить расположение файла с каталогом рабочей области в Eclipse:

Preferences -> XML -> XML Catalog -> Add..

Использовать

Key Type = Schema Location
Key = http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd

Затем вы можете использовать средство выбора файлов, чтобы выбрать файл XSD в файловой системе или в рабочей области.

Проблема двоякая:

  1. Eclipse поставляется с кешем множества хорошо известных XSD. Указанное вами пространство имен и / или местоположение не соответствуют ни одному из них.
  2. Таким образом, Eclipse пытается найти XSD в Интернете по предоставленному URI (может просто работать). К сожалению, похоже, что после того, как Oracle пересмотрела java.sun.com, этот механизм просто отключился в Eclipse (очевидно, сервер перенаправляет на домашнюю страницу вместо того, чтобы просто сказать «не существует, извините»).

Когда вы установите правильные значения для Java EE 5, запись в кэше будет найдена, и Eclipse будет счастлив.

Другие вопросы по теме