Version Tomcat 5.5
Problème
Après avoir ajouté un filtre dans une application Tomcat sous tomcat/webapps/myApplication/WEB-INF/classes/filters/myFilter.class, l'application ne démarre plus. Dans les logs on trouve l'erreur suivante:
tomcat/logs/catalina.out:
ERROR 44:02 [/myApplication]> Exception au démarrage du filtre RestApiFlashFilter java.lang.NoClassDefFoundError: javax/servlet/Filter at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$000(URLClassLoader.java:56) ...
Solution
Le problème est causé par la présence dans le CLASSPATH d'une copie de servlet.jar ou servlet-api.jar. Cette librairie ne devrait se trouver que dans le dossier tomcat/common/lib de Tomcat est pas ailleurs. Dans le cas contraire, le classloader de Tomcat se marche dessus.