web-dev-qa-db-fra.com

Avertissement Bogus Eclipse pour web.xml: "Aucune contrainte de grammaire (schéma DTD ou XML) détectée pour le document."

Le haut de mon web.xml le fichier ressemble à ceci:

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

Mais je reçois toujours l'avertissement d'Eclipse (Ganymède) qu'aucun schéma XML n'est détecté, et les violations de schéma ne sont pas averties. Les autres fichiers XML de mon projet ( Spring Framework fichiers de configuration par exemple) n'ont pas d'avertissement et donnent des avertissements corrects sur les violations de schéma.

Comment faire fonctionner la vérification de schéma et, espérons-le, l'avertissement de disparaître? Le serveur fonctionne correctement. Il semble que ce soit un problème IDE.

34
Brian Deacon

Essayez peut-être:

http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd

Au lieu de:

http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd

Également <!DOCTYPE ...> est manquant:

<?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>
27
toolkit

Je déteste cet avertissement aussi. Surtout parce qu'il apparaît dans des fichiers XML que vous n'avez pas écrits mais qui apparaissent dans votre projet pour une raison quelconque (si vous utilisez MAVEN c'est l'enfer).

Avec Eclipse 3.5+, vous pouvez facilement supprimer cette règle de validation. Allez dans Préférences -> XML -> FICHIERS XML -> Validation et sélectionnez "ignorer".

Vous devrez peut-être également faire un Projet -> Nettoyer pour que les avertissements de validation disparaissent.

alt text

46
monzonj

Videz le cache des fichiers de validation stockés.

Fenêtre> Préférences> Général> Connexions réseau> Cache puis supprimez tout. Maintenant, validez le fichier et voyez si cela clarifie les choses.

Cela m'est arrivé et vider le cache pour la validation était le seul moyen de le faire fonctionner à nouveau correctement. Le conseil pour effacer le cache sale a été trouvé ici .

10
Tiris

Si vous avez le même message d'erreur (trompeur) car votre éditeur XML n'a pas trouvé le fichier XSD, vous pouvez ajouter une entrée de catalogue.

Vous choisissez l'URL spécifiée pour le schéma, pour une déclaration comme

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

L'URL du fichier de schéma (http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd) est spécifiée pour l'espace de noms http://Java.Sun.com/xml/ ns/j2ee . Vous pouvez maintenant rediriger l'emplacement du fichier avec le catalogue de l'espace de travail dans Eclipse:

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

Utilisation

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

Et ensuite, vous pouvez utiliser le sélecteur de fichiers pour sélectionner réellement un fichier XSD sur le système de fichiers ou l'espace de travail.

2
eckes

vous pouvez également voir ma réponse pour une question similaire sur .

Fondamentalement, écrivez simplement votre xml pour vous conformer à la règle requise

0
Damilola

Le problème est double:

  1. Eclipse est livré avec un cache de nombreux XSD bien connus. L'espace de nom et/ou l'emplacement que vous fournissez ne correspond à aucun de ces éléments.
  2. Eclipse essaie donc d'aller chercher le XSD sur Internet sur l'URI fourni (peut juste fonctionner). Malheureusement, il semble qu'après la révision d'Oracle Java.Sun.com, ce mécanisme arrive à expiration dans Eclipse (apparemment, le serveur redirige vers la page d'accueil au lieu de simplement dire "n'existe pas, désolé").

Lorsque vous révisez les valeurs correctes pour Java EE 5, l'entrée dans le cache sera trouvée et Eclipse sera satisfait.

0