Почему создание сервлетов в Eclipse нарушает мой web.xml?

Будучи несколько ленивым, я был весьма счастлив, обнаружив, что могу создать новый исходный код сервлета, выбрав New -> Servlet, вместо того, чтобы переходить New -> Class, а затем редактировать класс в сервлет.

Тем не менее, я обнаружил, что каждый раз, когда я создаю новый сервлет в Eclipse, Eclipse изменяет мой web.xml.

В частности, он изменяет верхний элемент на:

<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
    xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    id="WebApp_ID" version="2.4">

(перевод строки в мой.)

Это не обязательно плохо, но затем он изменяет различные подэлементы, помещая «javaee:» перед их именем, чтобы указать, что эти элементы принадлежат этому пространству имен.

Например, он изменяет

<display-name>ShowLifecycles</display-name>

на

<javaee:display-name>ShowLifecycles</javaee:display-name>

, после чего eclipse жалуется обо всех измененных элементах, давая мне такие обозначения, как:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'javaee:display-name'. One of '{"http://
 java.sun.com/xml/ns/j2ee":description, "http://java.sun.com/xml/ns/j2ee":display-name, "http://java.sun.com/xml/ns/
 j2ee":icon, "http://java.sun.com/xml/ns/j2ee":distributable, "http://java.sun.com/xml/ns/j2ee":context-param, "http://
 java.sun.com/xml/ns/j2ee":filter, "http://java.sun.com/xml/ns/j2ee":filter-mapping, "http://java.sun.com/xml/ns/
 j2ee":listener, "http://java.sun.com/xml/ns/j2ee":servlet, "http://java.sun.com/xml/ns/j2ee":servlet-mapping, "http://
 java.sun.com/xml/ns/j2ee":session-config, "http://java.sun.com/xml/ns/j2ee":mime-mapping, "http://java.sun.com/xml/ns/
 j2ee":welcome-file-list, "http://java.sun.com/xml/ns/j2ee":error-page, "http://java.sun.com/xml/ns/j2ee":jsp-config, "http://
 java.sun.com/xml/ns/j2ee":security-constraint, "http://java.sun.com/xml/ns/j2ee":login-config, "http://java.sun.com/xml/ns/
 j2ee":security-role, "http://java.sun.com/xml/ns/j2ee":env-entry, "http://java.sun.com/xml/ns/j2ee":ejb-ref, "http://
 java.sun.com/xml/ns/j2ee":ejb-local-ref, "http://java.sun.com/xml/ns/j2ee":service-ref, "http://java.sun.com/xml/ns/
 j2ee":resource-ref, "http://java.sun.com/xml/ns/j2ee":resource-env-ref, "http://java.sun.com/xml/ns/j2ee":message-
 destination-ref, "http://java.sun.com/xml/ns/j2ee":message-destination, "http://java.sun.com/xml/ns/j2ee":locale-
 encoding-mapping-list}' is expected.

Что еще хуже, когда я использую поиск и замену, чтобы удалить все в "javaee:", который засоряет файл, Eclipse по-прежнему жалуется на них, хотя они больше не являются там. Я должен скопировать и вставить весь оставшийся файл поверх себя, чтобы эти жалобы исчезли.

Я уверен, что Eclipse пытается быть полезным, предвосхищая какое-то желание или потребность в этом пространстве имен. Как я могу сделать одно из двух:

  1. Заставить его перестать это делать?

  2. Воспользоваться тем, что он пытается сделать, и заставить его работать на меня, а не против меня?

7
задан Brian Kessler 24 October 2010 в 11:30
поделиться