2014-10-18 8 views
35

ich ein Java dynamische Web-Projekt in die Eclipse-IDE importiert haben (die in Eclipse IDE implementiert wurde und einwandfreie Funktion).getDispatcherType() für den Typ undefined HttpServletRequest

Ich bekomme eine "getDispatcherType() ist undefined für den Typ HttpServletRequest" Fehler beim Ausführen des Projekts.

Ich habe jede Datei in IDE gemäß der Struktur kopiert und die Arbeit getan ist.

Jetzt möchte ich nur wissen, warum ich diese Störung erhalte, wenn ich das Projekt importiert haben. Hatte jemand das gleiche Problem? Bitte lassen Sie mich wissen, welchen Fehler ich gemacht habe.

+1

Das Projekt, das zuvor in der Apache Tomcat 7.0.X Server-Version implementiert wurde. Ich habe versucht, das in meiner Umgebung zu importieren. Ich benutze Apache Tomcat 8.0.14 und ich habe oben erwähnten Fehler. Also habe ich meinen Server auf 7 version.My Projekt funktioniert jetzt perfekt. es klingt nicht logisch. ist Apache Tomcat ist nicht rückwärts kompatibel? Experten bitte klären Sie mich. –

+2

hast du gelöst? Das gleiche Problem hier .. – ianaz

+0

Nein, ich habe von diesem Problem weitergemacht. Ich benutze Tomcat Version 7.X. –

Antwort

42

Ich hatte das gleiche Problem, als ich eine widersprüchliche Servlet-API-Version hatte, die ich in IntelliJ verwendete, die in Konflikt mit dem war, was in Tomcat 8.0.x unterstützt wurde ... Ich verwendete Maven, also änderte ich meine Abhängigkeit dazu , dann habe ich eine saubere Bereitstellung meiner Webapp und das Problem ging weg.

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
</dependency> 
+1

Hallo, ich habe die gleichen Probleme. Nur um zu verdeutlichen, haben Sie das "zur Verfügung gestellt" in der maven-Abhängigkeit hinzugefügt? –

+0

Arbeitete für mich :-) – user1007522

+2

Dies ist eine falsche Lösung/beheben, wie Sie die gleiche Abhängigkeit zweimal hinzufügen, eine von Tomcat 8 zur Verfügung gestellt, und eine andere in Ihrem lib-Ordner. Der Fehler tritt auf, wenn servlet-api 2.5 von einer Drittanbieterabhängigkeit hinzugefügt wird. Es sei denn, Sie befinden sich nicht in einem Container, der Ihnen die Servlet-API zur Verfügung stellt. –

14

tomcat 8.0.18, maven. Es geht um einen lib-Konflikt. Meine Lösung ist:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
</dependency> 

geändert:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
</dependency> 
0

Dies kann auch passieren, wenn sie von einem alten auf neuere Tomcat-Version und halten die alten JAR-Dateien wie j2ee.jar und javaee.jar aktualisieren.

j2ee.jar sollte nerver in Ihrem Webapp enthalten ist, wird die interfae von tomcat implementiert

0

ich dieses Problem gelöst, indem den Servlet-api.jar mit und jsp-api.jar von tomcat selbst, so dass die Abhängigkeit mit Systemumfang wird wie unten angegeben werden:

<servlet.api.jar.path>/opt/apache-tomcat-8.0.15/lib/servlet-api.jar</servlet.api.jar.path> 
<jsp.api.jar.path>/opt/apache-tomcat-8.0.15/lib/jsp-api.jar</jsp.api.jar.path> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>3.0</version> 
     <scope>system</scope> 
     <systemPath>${servlet.api.jar.path}</systemPath> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.2</version> 
     <scope>system</scope> 
     <systemPath>${jsp.api.jar.path}</systemPath> 
    </dependency> 
+0

Ich entfernte die JSP-API und JSTL Abhängigkeiten (beide waren 2.1 und 1.2 Versionen) und es funktionierte für mich. –

5

Sie sollten „Servlet-api-2.5.jar“ von jeder anderen Abhängigkeiten ausschließen, die Sie in Ihrem pom.xml haben.

Versuchen Sie nicht, einen anderen Servlet-api als Kompilierung hinzuzufügen, wie Ihr Kater für Dich bietet es bereits.


Meine Schritte:

Ich habe überprüft, dass es einen Servlet-api-2.5.jar wurde von Maven in meinen WEB-INF/lib Ordner enthalten ist, so ist, dann, überprüfte ich die vollständigen Abhängigkeitsgraphen auf "Maven projects @IntelliJ Idea", dann habe ich diese Abhängigkeit von ALLEN Orten ausgeschlossen, wo sie herkommt. [Die Schaltfläche "Abhängigkeiten anzeigen" ist dafür praktisch]

Ich musste "Commons-Logging" (wie es Servlet-API 2.5 Abhängigkeit hat) von Velocity-Tools ausschließen. Auch musste Servlet-API von Jaxws-Spring, die eine direkte Abhängigkeit von Standardbereich hat ausgeschlossen werden.

Dann fügen Sie einfach den Umfang zur Verfügung gestellt, wie Sie sollten auf Ihrer javax.servlet-api Abhängigkeit.

Wenn Sie Ihren Servlet-api 3.0.1+ als „kompiliert“ hinzufügen, können Sie mit den beiden am Ende, und die erste wird gewinnen laden, was überhaupt nicht gut ist.

Hinweis: Meine Vermutung ist, dass dieses Problem aus der Umbenennung der mit der ältesten Version überschrieben groupId/artifactId von Servlet-api, und nicht zu werden kommt enthalten auf Maven Projekt. : \

+0

Sie sollten diese wahrscheinlich akzeptieren. Arbeitete für mich nur um Kommentierung aus: javax.servlet Servlet-api 2,5 sinisterrook

1

Wenn Ihr Kater Version 8 verwendet wird:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
</dependency> 

gearbeitet!

+0

dies für mich gearbeitet, tomcat 8 kompatible Lösung !! –

Verwandte Themen