Siendo un poco flojo, me alegré mucho de encontrar que podía crear un código fuente de servlet nuevo yendo Nuevo -> Servlet, en lugar de ir Nuevo -> Clase y luego editando la clase en un servlet.¿Por qué crear Servlets en Eclipse está rompiendo mi web.xml?
Sin embargo, he descubierto que cada vez que creo un nuevo servlet en Eclipse, Eclipse modifica mi web.xml.
Específicamente, se modifica el elemento superior a: (. Saltos de línea de minas)
<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">
Esto no parece necesariamente malo, pero entonces se modifica varios sub-elementos, poniendo "JavaEE: "delante de su nombre, para indicar que estos elementos pertenecen a ese espacio de nombres.
Por ejemplo, cambia
<display-name>ShowLifecycles</display-name>
a
<javaee:display-name>ShowLifecycles</javaee:display-name>
Después de lo cual eclipsa a continuación, se queja de todos los elementos que ha modificado, y me da notaciones como:
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.
Para hacer Lo que es peor, cuando uso find y replace para eliminar todo en "javaee:" que ensucia el archivo, Eclipse todavía se queja de esto aunque ya no esté allí. Debo copiar y pegar todo el archivo restante para que desaparezcan.
Estoy seguro de que Eclipse está tratando de ser útil, anticipándose a algún deseo o necesidad de este espacio de nombres. ¿Cómo puedo hacer una de estas dos cosas:
Hacer que deje de hacer esto?
Aproveche lo que sea que esté tratando de hacer, y hágalo funcionar para mí en lugar de contra mí?
este es un buen motivo para evitar los asistentes de Eclipse –
¿Se puede usar servlet 3.0? – Bozho
@Bozho - Soy un principiante cuando se trata de servlets. Probablemente podría usar servlet 3.0, pero ni siquiera sé qué versión estoy usando actualmente (creo que es la última) o cómo decirle que use una versión diferente. –