Je dirige un projet Maven qui est aussi un projet web dynamique. J'ai utilisé toutes les bibliothèques Spring dans Maven. J'ai créé web.xml
, mais lorsque je démarre mon serveur Tomcat 7, je reçois le message suivant:
INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
J'ai essayé de supprimer le servlet de webapp/lib
, mais cela n'a pas fonctionné. Faites-moi savoir ce qu'il faut faire dans mon cas.
Réponses:
Le fichier .jar de l'API servlet ne doit pas être intégré à la webapp car, évidemment, le conteneur a déjà ces classes dans son classpath: il implémente les interfaces contenues dans ce jar.
La dépendance doit être dans la
provided
portée, plutôt que dans lacompile
portée par défaut , dans votre pom Maven:la source
Vous obtenez ce message d'avertissement lorsque le fichier jar de l'api du servlet a déjà été chargé dans le conteneur et que vous essayez de le charger à nouveau à partir du
lib
répertoire.servlet.jar
de votrelib
répertoire.lib
répertoire, recherchez le chemin de compilation et supprimez le fichier jar.Si vous exécutez un projet maven, modifiez la
javax.servlet-api
dépendance en portéeprovided
dans votre pom.xml car le conteneur a déjà fourni le fichier jar de servlet en lui-même.la source
Pour résoudre ce problème, définissez la portée sur fourni . Cela indique à Maven d'utiliser le code servlet-api.jar uniquement pour la compilation et le test, mais de NE PAS l'inclure dans le fichier WAR. Le conteneur déployé «fournira» le servlet-api.jar au moment de l'exécution.
la source
Vous pouvez trouver la ligne de commande Windows suivante utile pour rechercher le fichier jar incriminé. il crée un index de tous les fichiers de classe dans tous les jars du dossier. Exécutez à partir du dossier lib de votre application déployée, puis recherchez dans le fichier index.txt la classe incriminée.
la source
Périmètre de dépendance Maven
la source
J'ai été aux prises avec ce problème et j'ai essayé de nombreuses «solutions».
Cependant, à la fin, le seul qui a fonctionné et il a fallu quelques secondes pour le faire était de: supprimer et rajouter une nouvelle instance de serveur !
En gros, j'ai fait un clic droit sur mon serveur Tomcat dans Eclipse sous Serveurs et je l'ai supprimé. Ensuite, j'ai ajouté un nouveau serveur Tomcat. Nettoyé et redéployé l'application et je me suis débarrassé de cette erreur.
la source
Recherchez dans le répertoire suivant le fichier jar el-api.jar: C: \ apache-tomcat-7.0.39 \ lib \ el-api.jar s'il existe alors dans ce répertoire de votre application Web WEB-INF \ lib \ el-api.jar le pot doit être retiré
la source
lorsque votre modèle d'URL est incorrect, cette erreur peut se produire.
par exemple. Si vous avez écrit @WebServlet ("login"), cette erreur s'affichera. Le bon est @WebServlet ("/ login").
la source
Les exclusions et
provided
dépendances ne fonctionneront pas dans les projets enfants.Si vous utilisez l'héritage dans des projets Maven, vous devez inclure cette configuration dans le
pom.xml
fichier parent . Vous aurez une<parent>...</parent>
section dans votre pom.xml si vous utilisez l'héritage . Donc, vous aurez quelque chose comme ça chez vos parentspom.xml
:la source
La bibliothèque de dépendances JAX-WS «jaxws-rt.jar» est manquante.
Allez ici http://jax-ws.java.net/ . Téléchargez la distribution JAX-WS RI. Décompressez-le et copiez «jaxws-rt.jar» dans le dossier de la bibliothèque Tomcat «{$ TOMCAT} / lib». Redémarrez Tomcat.
la source
Généralement, lorsque vous voyez ce message, il est bénin. Si ça dit
Cela signifie qu'il ignore votre servlet-api-2.5.jar car tomcat a déjà une version intégrée de ce fichier jar, il n'utilisera donc pas la vôtre. En règle générale, cela ne pose pas de problème.
Si cependant il dit
WEB-INF/lib/my_jar.jar - jar not loaded...Offending class: javax/servlet/Servlet.class
puis ce que vous pouvez faire (dans mon cas, c'est un pot ombré) est exécuté
Dépendance $ mvn: arbre
et découvrez que vous avez une dépendance transitive sur "quelque chose" qui dépend d'un jar qui est soit servlet-api ou quelque chose comme ça (ex:)
tomcat-servlet-api-9.0.0
. Alors ajoutez une exclusion à cela à votre pom, ex: (dans mon cas, tomcat, dans votre cas, probablement ceux mentionnés dans les autres réponses):la source
Supprimer
servlet.jar
duweb-inf/lib
dossier source car il est disponible dans lelib
dossier tomcat puis cela fonctionne bienla source