Tutorial: Fehler "javax.servlet.http.HttpServlet not found" in Eclipse beheben
Hier ist ein ausführliches Tutorial, wie du den Fehler „Superclass javax.servlet.http.HttpServlet not found“ in Eclipse behebst, insbesondere im Kontext von Tomcat 10.
Dieser Fehler tritt auf, wenn Eclipse die Servlet-Bibliotheken nicht in seinem Build Path findet. Bei Tomcat 10 gibt es zudem eine wichtige Besonderheit: Der Namensraum hat sich von javax.* zu jakarta.* geändert.
Schritt 1: Das Wichtigste zu Tomcat 10 (Jakarta EE)
Bevor du den Build Path anpasst, musst du folgendes wissen:
Tomcat 10 verwendet die Jakarta EE Spezifikation. Das bedeutet, dass Servlets nicht mehr über javax.servlet importiert werden, sondern über jakarta.servlet.
- Lösung: Ersetze in deinem Java-Code alle Importe von
javax.servlet.*durchjakarta.servlet.*. - Solltest du gezwungen sein, den alten
javax-Standard zu nutzen, müsstest du auf Tomcat 9 zurückgreifen. Für Tomcat 10 istjakartader Standard.
Schritt 2: Server Runtime zum Projekt hinzufügen
In den meisten Fällen liegt der Fehler daran, dass das Projekt nicht weiß, dass es gegen den Tomcat-Server kompiliert werden soll.
- Mache einen Rechtsklick auf dein Projekt im Project Explorer.
- Wähle Properties (Eigenschaften) ganz unten.
- Navigiere im Menü links zu Targeted Runtimes.
- Hier sollte dein Apache Tomcat aufgelistet sein. Setze einen Haken in die Checkbox daneben.
- Klicke auf Apply and Close.
Falls kein Server in der Liste steht, musst du ihn erst unter Window > Preferences > Server > Runtime Environments hinzufügen.
Schritt 3: Den Java Build Path manuell anpassen
Sollte Schritt 2 das Problem nicht lösen, kannst du die Server-Bibliotheken manuell hinzufügen:
- Rechtsklick auf das Projekt -> Properties.
- Wähle links Java Build Path.
- Klicke auf den Reiter Libraries.
- Wähle (falls vorhanden) Classpath aus und klicke rechts auf Add Library....
- Wähle in der Liste Server Runtime aus und klicke auf Next.
- Wähle Apache Tomcat aus der Liste und klicke auf Finish.
- Bestätige mit Apply and Close.
Schritt 4: Lösung für Maven-Projekte
Falls du ein Maven-Projekt nutzt, werden die Bibliotheken über die pom.xml verwaltet. Für Tomcat 10 musst du die Jakarta Servlet API hinzufügen:
Füge folgende Dependency in deine pom.xml ein:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version> <!-- Oder die aktuellste Version -->
<scope>provided</scope>
</dependency>
Hinweis: Der Scope <scope>provided</scope> ist wichtig, da der Tomcat-Server die Bibliothek zur Laufzeit selbst bereitstellt und sie nicht in dein WAR-File gepackt werden muss.
Schritt 5: Projekt bereinigen (Clean)
Manchmal "merkt" Eclipse erst nach einem Neustart der Validierung, dass die Fehler behoben sind.
- Gehe im Menü oben auf Project.
- Wähle Clean....
- Wähle dein Projekt aus und klicke auf Clean.
Zusammenfassung
- Tomcat 10 nutzt
jakarta.servletstattjavax.servlet. - Der Fehler wird meist durch Zuweisung der Targeted Runtime in den Projekteigenschaften behoben.
- Bei Maven-Projekten muss die entsprechende
jakarta.servlet-apiin derpom.xmlstehen.