2014-02-22 7 views
20

Dies ist, was der Fehler habe ich, wenn ich versuche, Maven Projekt bereitstellen zu tomcat mvn tomcat7: deploy Fehler: INFO: validateJarFile (D: \ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_ 1 \ WEB-INF \ lib \ javax.servlet-api-3.0.1.jar) - jar nicht geladen. Siehe Servlet Spec 3. 0, Abschnitt 10.7.2. Anstößige Klasse: javax/Servlet/Servlet.classJar-Datei ist fehlgeschlagen in tomcat Webapps laden

Aber der javax.servlet-api-3.0.1.jar gibt es in WEB-INF \ lib Dank

+0

mögliche Duplikate von [Fehler: Servlet Jar nicht geladen ... Offendierende Klasse: javax/servlet/Servlet.class] (http://stackoverflow.com/questions/1993493/error-servlet-jar-not-loaded- beleidigende-Klasse-javax-servlet-servlet-Klasse) – Raedwald

Antwort

44

INFO: validateJarFile(D:\Softwares\tomcat\apache-tomcat-7.0.50\webapps\myWebApp_ 1\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded

Servlet3.0 bereits Wird mit dem Tomcat innerhalb seines lib-Ordners geliefert und Tomcat wird immer das dort vorhandene Servlet-Jar laden. Deshalb erhalten Sie die Warnung, dass Tomcat Ihr Glas nicht in das Projekt lädt.

Einfache Lösung: Wenn Sie maven verwenden, setzen Sie seinen Gültigkeitsbereich auf provided in der Datei pom.xml und maven wird es nicht in die WEB-INF/lib Ihres Projekts einfügen. Etwas wie

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>3.0</version> 
    <scope>provided</scope> 
</dependency> 
+1

Was ist, wenn ich nicht Maven (Eclipse + Terminal startete Tomcat)? – Patryk

+0

Wenn Sie nicht Maven verwenden, dann müssen Sie die 'Servlet-API'-Jar in den WEB-INF/lib-Ordner des Krieges verpackt haben. Überprüfen Sie den lib-Ordner, um ihn zu überprüfen und zu entfernen, wenn er dort vorhanden ist. –

+0

Das half, aber ich habe herausgefunden, dass beim Importieren meines Projekts aus SVN ich sehe, dass Apache CXF in den Abhängigkeiten von meinem Projekt eine 'geronimo-servlet_3.0_spec-1.0.jar' Abhängigkeit hat und in der es verpackt wird das 'lib /' Verzeichnis von meinem '.war'. Irgendwelche Ideen, wie man es von dort entfernt? – Patryk

1

Präzise Erklärung von Saif asif.

Ich benutzte Gradle als Build-Tool. Es funktionierte für mich, die tomcat-servlet-api.jar auszuschließen, die standardmäßig von tomcat bereitgestellt wird.

Sie müssen wissen, welche Ihrer Abhängigkeit transitively tomcat-Servlet-api.jar zum Krieg ist das Hinzufügen und dann ausschließen mit folgenden

compile ('your dependency goes here') { 
     exclude module:'tomcat-servlet-api' 
    } 
-2

beste Lösung: entfernen Sie das Glas (dh javax.servlet- api-3.0.1.jar) von lib

1

Dies ist nur eine Warnung, die in Ihrem Protokoll angezeigt wird, kein Fehler. Ihr Projekt wird weiterhin bereitgestellt, wenn Sie dies ignorieren.

Sie können diesen Fehler loswerden, indem Sie Ihre .war-Datei mit maven neu erstellen und sie in \ webapps \ kopieren, um Ihre alten Dateien zu entfernen.