web-dev-qa-db-fra.com

Eclipse se plaint des attributs de l'application Web

Ma déclaration d'application Web dans mon fichier web.xml est la suivante:

<web-app version="2.4"
         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_4.xsd" >

Et Eclipse se plaint de tous les 4 attributs, voici une plainte pour Eclipse:

Attribute "version" must be declared for element type "web-app"

Pourquoi Eclipse se plaint-il de ces attributs? Est-ce que je fais quelque chose de mal ici?

18
Mark Kadlec

Supprimez la ligne DOCTYPE, c’est ce que le xsd doit remplacer. J'ai eu le même problème et seulement cela avait fonctionné.

30
Ondrej Tokar

Essayez de mettre de cette façon:

<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_4.xsd"   version="2.4" >

Le validateur Eclipse est très strict avec la commande.

11
nachoorme

J'ai eu le même problème. J'ai essayé un emplacement de schéma différent et cela a fonctionné pour moi. Au lieu de

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

essayez d'utiliser ceci

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

Définissez également la version sur "3.0".

8
Arif Hossain

Vous n'avez pas oublié cette ligne dans votre fichier XML ?:

    <?xml version="1.0" encoding="ISO-8859-1"?>

Votre fichier devrait commencer comme ceci:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://Java.Sun.com/xml/ns/javaee" 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">

Si cela ne fonctionne pas, nettoyez et actualisez votre projet.

3
Anastasia Abramova

J'ai changé la déclaration de

http://Java.Sun.com/xml/ns/javaee/web-app_2_4.xsd ">

à la suite et cela a fonctionné comme un charme. Maintenant, aucune erreur ne s'affiche dans web.xml

http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd ">

1
mannedear

Reportez-vous au lien this Oracle.com pour savoir ce qui a été annoncé avec Java EE 7 (en supposant que nous travaillions avec cela). Les états de lien 

Tous les nouveaux schémas sont dans l'espace de noms http://xmlns.jcp.org/xml/ns/javaee/ .

L'espace de nom Java.Sun n'est pas devenu Java.Oracle, mais a été conservé par Le processus de communauté Java (JCP) . Par conséquent, tous les espaces de noms doivent pointer vers xmlns.jcp.org, comme le souligne également la documentation Java EE 7.

Maintenant, lorsque nous déployons une application Web (et donc la nécessité de définir un fichier web.xml), nous devons d’abord savoir ce que nous avons l’intention de faire.

Dites, nous travaillons avec Apache Tomcat V8. Si nous lisons la documentation ici , nous apprenons qu’il est livré avec Servlet 3.1 fourni. Donc, je préférerais une implémentation de Servlet 3.1, juste pour rester à jour si rien d’autre.

Maintenant, tout cela étant dit, voici la déclaration que je voudrais

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

</web-app>

J'espère que cela répond à la question.

1
Chiranjib

Il suffit de retirer le DOCTYPE. Et ça marche bien.

0
Sachin