it-swarm.com.de

Wie importiere ich die javax.servlet-API in mein Eclipse-Projekt?

Ich möchte mit Servlets in Eclipse entwickeln, aber es heißt, dass das Paket javax.servlet nicht aufgelöst werden kann. Wie kann ich meinem Eclipse-Projekt das Paket javax.servlet hinzufügen?

311
tom

Stellen Sie sicher, dass Sie die richtige Eclipse und den richtigen Server haben

Stellen Sie sicher, dass Sie mindestens Eclipse IDE für Java EE Entwickler (mit EE) verwenden. Es enthält Entwicklungstools zum Erstellen dynamischer Webprojekte und zur einfachen Integration von Servletcontainern (diese Tools sind Teil der Web Tools Platform, WTP). Falls Sie bereits Eclipse IDE für Java (ohne EE) hatten und einige EE-bezogene Plug-ins manuell installiert haben, besteht die Möglichkeit, dass dies nicht ordnungsgemäß durchgeführt wurde. Sie sollten es in den Papierkorb werfen und sich die echte Eclipse IDE für Java EE schnappen.

Sie müssen auch sicherstellen, dass auf Ihrem Computer bereits ein Servletcontainer installiert ist, der mindestens dieselbe Servlet-API-Version wie der Servletcontainer in der Produktionsumgebung implementiert, z. B. Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly usw. Normalerweise reicht es aus, die Zip-Datei herunterzuladen und zu extrahieren. Laden Sie bei Tomcat nicht das EXE-Format herunter, da dies nur für Windows-basierte Produktionsumgebungen gilt. Siehe auch a.o. Mehrere Ports (8005, 8080, 8009), die von Tomcat Server bei localhost benötigt werden, werden bereits verwendet .

Ein Servletcontainer ist eine konkrete Implementierung der Servlet-API. Beachten Sie, dass der Java EE SDK Download bei Oracle.com grundsätzlich GlassFish enthält. Wenn Sie also Java EE SDK bereits heruntergeladen haben, haben Sie GlassFish im Grunde genommen bereits. Beachten Sie auch, dass GlassFish und JBoss AS/WildFly mehr sind als nur ein Servletcontainer. Sie unterstützen auch JSF, EJB, JPA und alle anderen Java EE-Fantasien . Siehe auch a.o. Was genau ist Java EE?


Integrieren Sie den Server in Eclipse und verknüpfen Sie ihn mit Project

Nachdem Sie sowohl Eclipse für Java EE als auch einen Servletcontainer auf Ihrem Computer installiert haben, führen Sie die folgenden Schritte in Eclipse aus:

  1. Servletcontainer in Eclipse integrieren

    ein. Über Server-Ansicht

    • Öffnen Sie die Ansicht Server im unteren Feld.
    • Klicken Sie dort mit der rechten Maustaste und wählen Sie Neu> Server .
    • Wählen Sie die entsprechende Servletcontainer-Marke und -Version aus und führen Sie den Assistenten durch.

      enter image description here

    b. Oder über Eclipse-Einstellungen

    • Öffnen Sie Window> Preferences> Server> Runtime Environments .
    • Hier können Sie Server hinzufügen , Server bearbeiten und Server entfernen .

      enter image description here

  2. Server mit Projekt verknüpfen

    ein. In neuem Projekt

    • Öffnen Sie den Projektnavigator/Explorer auf der linken Seite.
    • Klicken Sie dort mit der rechten Maustaste und wählen Sie Neu> Projekt und dann im Menü Web> Dynamisches Webprojekt .
    • Setzen Sie im Assistenten die Target Runtime auf den integrierten Server.

      enter image description here

    b. Oder in einem bestehenden Projekt

    • Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften .
    • Wählen Sie im Abschnitt Targeted Runtimes den integrierten Server aus.

      enter image description here

    In beiden Fällen übernimmt Eclipse die Bibliotheken des Servletcontainers automatisch in den Erstellungspfad. Auf diese Weise können Sie die Servlet-API importieren und verwenden.


Tragen Sie niemals lose serverspezifische JAR-Dateien mit sich

Sie sollten auf keinen Fall die Notwendigkeit haben, in der Eigenschaft Build Path des Projekts herumzuspielen. Sie sollten vor allem nie die einzelnen servletcontainer-spezifischen Bibliotheken wie servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar manuell kopieren/herunterladen/verschieben/einbinden , javaee.jar usw. Dies würde nur zu Problemen mit der zukünftigen Portierbarkeit, Kompatibilität, dem Klassenpfad und der Wartbarkeit führen, da Ihre Webanwendung nicht funktioniert, wenn sie auf einem Servletcontainer einer anderen Marke/Version bereitgestellt wird als der, von der diese Bibliotheken ursprünglich bezogen wurden .

Wenn Sie Maven verwenden, müssen Sie unbedingt sicherstellen, dass servletcontainerspezifische Bibliotheken, die bereits von der Ziellaufzeit bereitgestellt werden, als <scope>provided</scope> gekennzeichnet sind.

Hier sind einige typische Ausnahmen, die auftreten können, wenn Sie den /WEB-INF/lib oder sogar /JRE/lib, /JRE/lib/ext usw. mit servletcontainerspezifischen Bibliotheken verunreinigen, um die Kompilierungsfehler zu beheben:

402
BalusC

Kleiner Unterschied zu Hari:

Klicken Sie mit der rechten Maustaste auf project ---> Properties ---> Java Build Path ---> Add Library ... ---> Server Runtime ---> Apache Tomcat ----> Finish.

77
ivanLam

Fügen Sie servlet-api.jar aus Ihrem Server-Bibliotheksordner hinzu.enter image description here

Mach diesen Schritt

enter image description here

13
sarath

Schnellkorrektur - Dies funktionierte in Eclipse. Klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Java Erstellungspfad (Registerkarte) -> Externe JARs hinzufügen -> Suchen Sie die Servlet-API-JAR-Implementierung (wenn Tomcat - das benannte Servlet - api.jar) -> Klicken Sie auf OK. Das ist es !!

12
Hari Gudigundla

Fügen Sie javax.servlet-Abhängigkeit in pom.xml hinzu. Ihr Problem wird gelöst.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
11
Zeeshan Akhter

Ich weiß, dass dies ein alter Beitrag ist. Ich habe jedoch eine andere Instanz beobachtet, in der bereits Tomcat hinzugefügt wurde, aber dieser Fehler weiterhin auftritt. Haben Sie dies getan, um Folgendes zu beheben:
Alt + Enter
Projektfacetten
Rechts neben Details befindet sich ein weiterer Tab "Runtimes". Der installierte Tomcat-Server wird dort aufgelistet. Wählen Sie es aus.
Speichern Sie die Konfiguration und FERTIG!

Hoffe das hilft jemandem.

5
KNP

sie können einfach den servlet-api.jar kopieren und diese JAR-Dateien in den Ordner lib kopieren, der sich in WEB-INF befindet. dann bereinige einfach und baue dein projekt, deine fehler werden behoben.

  **OR**

sie können JAR-Dateien direkt zur Bibliothek hinzufügen, indem Sie die folgenden Schritte ausführen.

  1. Klicken Sie mit der rechten Maustaste auf das Projekt.
  2. Gehe zu Eigenschaften.
  3. Gehen Sie zu Java Build Path.
  4. Wählen Sie auf den Registerkarten die Option Bibliothek hinzufügen.
  5. Jar-Dateien hinzufügen
  6. geben Sie den Pfad Ihrer servlet-api.jar -Datei an.
  7. Bereinigen und erstellen Sie Ihr Projekt.
5

Aus Wikipedia .

import Java.io.IOException;
import Java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
                "Transitional//EN\">\n" +
                "<html>\n" +
                "<head><title>Hello WWW</title></head>\n" +
                "<body>\n" +
                "<h1>Hello WWW</h1>\n" +
                "</body></html>");
  }
}

Dies funktioniert natürlich nur, wenn Sie den servlet-api.jar zum Eclipse-Erstellungspfad hinzugefügt haben. Normalerweise verfügt Ihr Anwendungsserver (z. B. Tomcat ) über die richtige JAR-Datei.

3
Juha Syrjälä

Für Maven-Projekte fügen Sie folgende Abhängigkeit hinzu:

<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

Referenz

Für Gradle-Projekte:

dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}

oder javax.servlet.jar herunterladen und zu Ihrem Projekt hinzufügen.

3

Viele von uns entwickeln sich in Eclipse über ein Maven-Projekt. In diesem Fall können Sie Tomcat-Abhängigkeiten in Maven über die Gläser Tomcat-servlet-api und Tomcat-jsp-api einfügen. Für jede Version von Tomcat gibt es eine. Normalerweise reicht es aus, diese mit dem Gültigkeitsbereich provided zu Ihrem POM hinzuzufügen. Dadurch bleibt Ihr Build portabler.

Wenn Sie Tomcat in Zukunft aktualisieren, aktualisieren Sie einfach auch die Version dieser Gläser.

2
Erica Kane

In meinem Fall wurde Tomcat 7 trotz Installation nicht aufgelistet (deaktiviert), als ich zum Bildschirm Ziellaufzeiten ging.

Um das Problem zu beheben, musste ich unter Einstellungen-> Server-> Laufzeitumgebungen Tomcat 7 deinstallieren und neu installieren.

2
Paul LeBeau

Ich habe während der Projekterstellung eine Nullzeiger-Ausnahme im Zusammenhang mit "Dynamic Web Module" erhalten.

Um das Projekt zu kompilieren (das heißt, um javax.servlet erfolgreich zu importieren), musste ich zu den Eigenschaften des Projekts gehen , wählen Sie Markieren Sie in der Seitenleiste Projektfacetten Dynamic Web Module und klicken Sie auf Übernehmen .

Überraschenderweise wurde diesmal die Facette "Dynamic Web Module" korrekt installiert und der Import begann zu funktionieren.

2
Ivan Vučica

Sie sollten vor allem niemals die einzelnen servletcontainer-spezifischen Bibliotheken wie servlet-api.jar manuell kopieren/herunterladen/verschieben/einbinden

@BalusC,

Ich würde es vorziehen, die genauen Klassen zu verwenden, die meine Anwendung verwenden wird, anstatt eine von Eclipse (wenn ich mich wie ein paranoider Entwickler fühle).

Eine andere Lösung wäre, Eclipse "Build-Pfad konfigurieren"> Bibliotheken> Externe Jars hinzufügen zu verwenden und Servlet-APIs für jeden Container hinzuzufügen, den man verwenden möchte.

Folgen Sie bei der Erstellung mit ant der Lösung von @kaustav datta - haben Sie eine Eigenschaft wie Tomcat.home oder weblogic.home. Es gibt jedoch eine weitere Einschränkung, dass der Entwickler Weblogic auf seinem lokalen Computer installieren muss, wenn Weblogic verwendet wird! Irgendeine andere sauberere Lösung?

0

Dies könnte auch der Grund sein. Ich bin auf die Idee gekommen, pom.xml zu folgen.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-Tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Das ungelöste Problem war auf den Ausschluss von spring-boot-starter-Tomcat zurückzuführen. Entfernen Sie einfach die <exclusions>...</exclusions> - Abhängigkeit, um das Problem zu beheben, aber stellen Sie sicher, dass dies auch den eingebetteten Tomcat-Server ausschließt.

Wenn Sie auch einen eingebetteten Tomcat-Server benötigen, können Sie dieselbe Abhängigkeit mit compile scope hinzufügen.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-Tomcat</artifactId>
    <scope>compile</scope>
</dependency>
0
Muhammad Usman