Der Import javax.servlet kann nicht aufgelöst werden [duplicate]

Lesezeit: 5 Minuten

Benutzer-Avatar
Schlange

Ich versuche zu verwenden Finsternis zum Java-EE um Webanwendungen zu entwickeln.

Ich muss verwenden Kater als meine Server. Ich habe Tomcat heruntergeladen und es läuft. Aber mein Programm lässt sich nicht kompilieren.

Ich bekomme folgenden Fehler:

Der Import javax.servlet kann nicht aufgelöst werden.

Was muss ich tun?

Benutzer-Avatar
Richard Furcht

Sie müssen die Servlet-API zu Ihrem Klassenpfad hinzufügen. In Tomcat 6.0 befindet sich dies in einem JAR namens servlet-api.jar bei Tomcat lib Mappe. Sie können entweder einen Verweis auf diese JAR-Datei zum Klassenpfad des Projekts hinzufügen oder eine Kopie der JAR-Datei in Ihr Eclipse-Projekt einfügen und sie von dort aus zum Klassenpfad hinzufügen.

Wenn Sie das JAR in Tomcat’s lassen möchten lib Mappe:

  • Klicken Sie mit der rechten Maustaste auf das Projekt, klicken Sie auf Eigenschaften.
  • Wählen Java-Erstellungspfad.
  • Drücke den Bibliotheken Tab
  • Klicken Externe JARs hinzufügen…
  • Durchsuchen, um zu finden servlet-api.jar und wählen Sie es aus.
  • Klicken OK um den Erstellungspfad zu aktualisieren.

Oder, wenn Sie das JAR in Ihr Projekt kopieren:

  • Klicken Sie mit der rechten Maustaste auf das Projekt, klicken Sie auf Eigenschaften.
  • Wählen Java-Erstellungspfad.
  • Klicken JARs hinzufügen…
  • Finden servlet-api.jar in Ihrem Projekt und wählen Sie es aus.
  • Klicken OK um den Erstellungspfad zu aktualisieren.

  • Eine Kopie eines Servletcontainer-spezifischen JARs haben /WEB-INF/lib würde Ihre Anwendung nicht portierbar machen. Es kann nur auf genau derselben Servermarke/-version und nicht auf anderen Servermarken/-versionen ausgeführt werden. NoClassDefFoundError würde um deinen Kopf fliegen.

    – BalusC

    7. November 2010 um 22:24 Uhr


  • Ich habe nie gesagt, dass es rein sollte WEB-INF/lib – nur dass es in das Projekt kopiert werden könnte, damit es dem Erstellungspfad hinzugefügt werden kann. Das bedeutet nicht unbedingt, dass es in den WAR aufgenommen wird.

    – Richard Furcht

    7. November 2010 um 22:26 Uhr

  • Trotzdem ist das einfach ungeschickt und nicht der empfohlene Ansatz.

    – BalusC

    7. November 2010 um 22:29 Uhr


  • Es ist eine Workaround-Lösung. Die genaue Lösung wird von BalusC unten angegeben.

    – Ahmet Karakaya

    5. Dezember 2012 um 7:31 Uhr

  • nichts hat sich beim Hinzufügen von servlet-api.jar geändert, Projekt > sauber hat es funktioniert.

    – Kimchoki

    7. September 2017 um 6:43 Uhr


Falls noch nicht geschehen, müssen Sie Tomcat in Ihre integrieren Server Aussicht. Klicken Sie dort mit der rechten Maustaste und wählen Sie aus Neu > Server. Wählen Sie die entsprechende Tomcat-Version aus der Liste aus und schließen Sie den Assistenten ab.

Wenn Sie eine neue erstellen Dynamisches Webprojektsollten Sie den integrierten Server aus der Liste als auswählen Gezielte Laufzeit im 1. Assistentenschritt.

Oder wenn Sie eine bestehende haben Dynamisches Webprojektkönnen Sie es einstellen/ändern Gezielte Laufzeiten Eintrag in den Projekteigenschaften. Eclipse fügt dann automatisch alle seine Bibliotheken zum Erstellungspfad hinzu (ohne eine Kopie davon im Projekt zu haben!).

  • @sage: Eclipse tut das auch für neue Projekte, die nach der Integration des Servers erstellt werden.

    – BalusC

    12. Februar 2014 um 9:13 Uhr

  • Funktioniert bei mir nicht, ich habe alles wie du gesagt hast, aber es kann javax.servlet immer noch nicht auflösen (mit Tomcat 8.0.3 als Server)

    – Römer

    9. März 2014 um 8:10 Uhr

Sie müssen den Umfang der Abhängigkeit in Ihrem POM auf „bereitgestellt“ setzen.

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

<dependency>  
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>

Dann wird alles gut.

Ich hatte das gleiche Problem, weil mein “Dynamic Web Project” keinen Verweis auf den installierten Server hatte, den ich verwenden wollte, und daher keinen Verweis auf die Servlet-API hatte, die der Server bereitstellt.

Die folgenden Schritte haben es gelöst, ohne dem Java-Build-Pfad eine zusätzliche Servlet-API hinzuzufügen (Eclipse-Version: Luna):

  • Rechtsklick auf Ihrem “Dynamic Web Project”
  • Auswählen Eigenschaften
  • Auswählen Facetten des Projekts in der Liste auf der linken Seite des Assistenten “Eigenschaften”.
  • Auf der rechten Seite des Assistenten sollten Sie eine Registerkarte mit dem Namen sehen Laufzeiten. Wählen Sie die Registerkarte Runtime und überprüfen Sie den Server Sie möchten das Servlet ausführen.

Bearbeiten: Wenn kein Server aufgeführt ist, können Sie auf der Registerkarte Laufzeiten einen neuen erstellen

Benutzer-Avatar
Andrej

Zu pom.xml hinzufügen

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

  • Beachten Sie nur, dass für den Fall, dass dieses Problem bei der Verwendung von maven weiterhin auftritt, wir das Projekt nur erneut erstellen müssen, damit es die Änderung aus den Abhängigkeiten erkennt.

    – Cuong Vo

    23. Mai 2019 um 2:09 Uhr

Benutzer-Avatar
Bozo

Ergänzen Sie die servlet-api.jar zu deinem Klassenpfad. Sie können es aus dem lib-Ordner von Tomcat nehmen.

  • Beachten Sie nur, dass für den Fall, dass dieses Problem bei der Verwendung von maven weiterhin auftritt, wir das Projekt nur erneut erstellen müssen, damit es die Änderung aus den Abhängigkeiten erkennt.

    – Cuong Vo

    23. Mai 2019 um 2:09 Uhr

Benutzer-Avatar
Varun

Wenn Sie diesen Kompilierungsfehler erhalten, bedeutet dies, dass Sie das Servlet-JAR nicht in den Klassenpfad aufgenommen haben. Der richtige Weg, dieses JAR einzubinden, besteht darin, das Server Runtime-Jar zu Ihrem Eclipse-Projekt hinzuzufügen. Sie sollten die folgenden Schritte ausführen, um dieses Problem zu beheben: Sie können die servlet-api.jar von hier herunterladen
http://www.java2s.com/Code/Jar/s/Downloadservletapijar.htm

Save it in directory. Right click on project -> go to properties->Buildpath and follow the steps.

Notiz: Die auf dem Bildschirm angezeigten Gläser sind nicht die richtigen Gläser.

Sie können dem Schritt zum Konfigurieren folgen.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein
Geben Sie hier die Bildbeschreibung ein
Geben Sie hier die Bildbeschreibung ein

1344480cookie-checkDer Import javax.servlet kann nicht aufgelöst werden [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy