servlet-api-2.5.jar - jar nicht geladen

servlet-api-2.5.jar – jar not loaded

Bereitstellen einer "War" -Datei auf Tomcat und Aufrufen der folgenden Fehlermeldungen:

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

Benutztes Werkzeug :

  1. JDK1.7

  2. Maven 3

  3. Tomcat 7

1. Grund

Der Tomcat-Container wird mit einer eigenen Version vonservlet-api.jar geliefert, und die "war" -Datei stellt dasselbe Jar erneut bereit und verursacht die Offending-Klasse: javax / servlet / Servlet.class.

Dies ist ein sehr häufiges Problem für Entwickler, die Maven als Build-Tool verwenden. Normalerweise schließen wirservlet-api als Projektabhängigkeit wie folgt ein:

pom.xml

    
        javax.servlet
        servlet-api
        2.5
    

Beim Erstellen einer Kriegsdatei enthält Maven auch dieservlet-api.

2. Lösung

Um dies zu beheben, setzen Sie den Bereich aufprovided. Dies weist Maven an, Codeservlet-api.jar nur zum Kompilieren und Testen zu verwenden, ihn jedoch NICHT in die WAR-Datei aufzunehmen. Der bereitgestellte Container "liefert" zur Laufzeit dieservlet-api.jar.

pom.xml

    
        javax.servlet
        servlet-api
        2.5
        provided