2008-11-26 4 views
34

La parte superior de mi archivo web.xml se parece a esto:Advertencia de Bogus Eclipse para web.xml: "No se detectaron restricciones gramaticales (DTD o esquema XML) para el documento."

<?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"> 

Pero aún así obtener la advertencia del Eclipse (Ganimedes) que no se detecta ningún esquema XML, y violaciónes de esquema no están siendo advertidos acerca. Otros archivos XML en mi proyecto (Spring Framework archivos de configuración, por ejemplo) no tienen la advertencia y dan las advertencias correctas sobre violaciones de esquema.

¿Cómo hago para que funcione el chequeo del esquema y espero que la advertencia desaparezca? El servidor se ejecuta correctamente. Simplemente parece ser un problema IDE.

+0

ninguna de estas soluciones trabajó para mí :( – cmcginty

Respuesta

26

quizás prueba:

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

En lugar de:

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

Además, la falta <!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> 
+1

También es necesario cambiar de xmlns: - http://java.sun.com/xml/ ns/J2EE a: - http://java.sun.com/xml/ns/javaee –

+4

y por qué aceptar la respuesta si no se soluciona el problema –

+1

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

-5

Añadir esta <!DOCTYPE ...> a su archivo XML. Por favor, ponerlo bajo <?xml ...>:

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

??? = Su elemento raíz, ahora si tu nombre subelemento está utilizando una palabra reservada html es posible que se captura de algunos errores, todo lo que tiene que hacer es cambiar a un no -palabra reservada.

Por ejemplo:
Si su sub-elemento actual es <img>, cambie a <pic> ...

+1

El archivo es un archivo web.xml, no un archivo xhtml. –

+0

Esto no funcionó f o yo. – cmcginty

46

No me gusta que advertir también. Especialmente porque aparece en los archivos XML que no has escrito pero aparece en tu proyecto por cualquier razón (si usas MAVEN es un infierno).

Con Eclipse 3.5+ puede eliminar fácilmente esta regla de validación. Vaya a Preferencias -> XML -> ARCHIVOS XML -> Validación y seleccione "ignorar".

Es posible que también tenga que hacer un Proyecto -> Limpiar para que las advertencias de validación desaparezcan.

alt text

+0

Uso mucho Maven y no obtengo este error en los archivos de Maven a menos que estén ubicados en el directorio de destino. En ese caso, es mejor agregar una regla para deshabilitar la validación en el directorio de destino que ignorar el error. – HDave

+5

Esto no soluciona el problema, solo oculta el síntoma. –

+3

NO HAGO ESTO ** Preferencias | XML | Archivos XML | Validación ** en Eclipse ya que solo enmascara/oculta el error, no resuelve el error. Si solo usa Eclipse para crear aplicaciones de Android, entonces esta "solución" es aceptable. Pero si usa Eclipse para compilar otros proyectos Java, JSF, etc., romperá estos proyectos si la validación XML está "desactivada". Así que ten cuidado. La solución real es que Oracle, Google e IBM actualicen sus softwares con DTD y esquemas actualizados. – ChuongPham

8

Borrar la caché para los archivos de validación almacenados.

Ventana> Preferencias> General> Conexiones de red> Caché y luego eliminar todo. Ahora vaya a validar el archivo y vea si eso aclara las cosas.

Esto me pasó y borrar el caché para la validación fue la única forma de que vuelva a funcionar correctamente. El consejo para borrar el caché sucio se encontró here.

+0

Esto funcionó para mí. Parece que en algún momento mi Eclipse guardó en caché una copia falsa de http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd que causaba que todos mis archivos web.xml fallaran la validación. –

+0

Esto funcionó para mí también cuando mis archivos de Spring Bean comenzaron a arrojar este error. – HDave

2

Si tiene el mismo mensaje de error (erróneo) porque su Editor XML no encontró el archivo XSD, puede agregar una entrada de catálogo.

Usted escoge la URL especificada para el esquema, para una declaración como

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

La dirección URL del archivo de esquema (http://java.sun.com/xml/ns/j2ee/web-app_2_5 .xsd) se especifica para el espacio de nombres http://java.sun.com/xml/ns/j2ee. Ahora puede redirigir la ubicación del archivo con el catálogo de espacio de trabajo en Eclipse:

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

Uso

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

Y a continuación, puede utilizar el selector de archivos para recoger en realidad un archivo XSD en el sistema de archivos o el espacio de trabajo

0

El problema es doble:

  1. barcos Eclipse con un caché de muchas de XSD conocidos. El espacio de nombre y/o la ubicación que proporciona no coincide con ninguno de estos.
  2. Así que Eclipse intenta ir a buscar el XSD en Internet en el URI proporcionado (puede que solo funcione). Desafortunadamente, parece que después de que Oracle revisó java.sun.com, este mecanismo agota el tiempo de espera en Eclipse (aparentemente el servidor redirige a la página principal en lugar de simplemente decir "no existe, lo siento").

Cuando revise los valores correctos para Java EE 5, se encontrará la entrada en la memoria caché y Eclipse estará contento.

Cuestiones relacionadas