Будучи несколько ленивым, я был весьма счастлив, обнаружив, что могу создать новый исходный код сервлета, выбрав 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 пытается быть полезным, предвосхищая какое-то желание или потребность в этом пространстве имен. Как я могу сделать одно из двух:
Заставить его перестать это делать?
Воспользоваться тем, что он пытается сделать, и заставить его работать на меня, а не против меня?