servlet-api-2.5.jar - JAR non chargé

servlet-api-2.5.jar – jar not loaded

Déployé un fichier «war» sur Tomcat et affiche les messages d'erreur suivants:

Jul 17, 2014 7:59:55 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\apache-tomcat-7.0.53\webapps\hc\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded.
See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class

Les outils utilisés :

  1. JDK1.7

  2. Maven 3

  3. Tomcat 7

1. Raison

Le conteneur de Tomcat est livré avec sa propre version deservlet-api.jar, et le fichier «war» déploie à nouveau le même fichier jar, et provoque la classe Offending: javax / servlet / Servlet.class.

Il s'agit d'un problème très courant pour les développeurs qui utilisent Maven comme outil de génération. Normalement, nous inclurons lesservlet-api en tant que dépendance de projet comme ceci:

pom.xml

    
        javax.servlet
        servlet-api
        2.5
    

Lors de la construction d'un fichier de guerre, Maven inclura également lesservlet-api.

2. Solution

Pour résoudre ce problème, définissez la portée surprovided. Cela indique à Maven d'utiliser le codeservlet-api.jar uniquement pour la compilation et le test, mais de NE PAS l'inclure dans le fichier WAR. Le conteneur déployé «fournira» lesservlet-api.jar au moment de l'exécution.

pom.xml

    
        javax.servlet
        servlet-api
        2.5
        provided