it-swarm.com.de

Kompilierungsfehler: Das Paket javax.servlet ist nicht vorhanden

Ich habe ein Paket, in dem ich javax.servlet. * Und javax.servlet.http. * .__ importiere. Wenn ich versuche, es in Eingabeaufforderung zu kompilieren, erhalte ich den Fehler

das Paket javax.servlet ist nicht vorhanden

Ich verwende JDK 1.7.0 und Tomcat 6.0.

54
Karadous

Sie müssen den Pfad zur Tomcat-Datei /lib/servlet-api.jar zum Klassenzeitpunkt der Kompilierungszeit hinzufügen.

javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.Java

Im Klassenpfad muss Java nach importierten Abhängigkeiten suchen. Andernfalls wird standardmäßig der aktuelle Ordner verwendet, der im obigen Beispiel als . enthalten ist. Der ; ist der Pfadtrenner für Windows. Wenn Sie ein Unix-basiertes Betriebssystem verwenden, müssen Sie stattdessen : verwenden.

66
BalusC

Wenn Sie mit Maven Project arbeiten, fügen Sie Ihrer pom.xml die folgende Abhängigkeit hinzu

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
23
Swalih

Ist es eine JSP oder ein Servlet?

Nun, diese beiden Pakete sind nicht wirklich in Java integriert wie Java.io. Sie werden stattdessen mit dem Servlet-fähigen Webserver (z. B. Tomcat) ausgeliefert. Bevor der Java-Compiler unser Servlet kompilieren kann, müssen wir also wissen, wo sich die Klassen in diesen beiden Paketen befinden.

Die erforderlichen Klassen werden normalerweise in einer Datei namens servlet.jar gespeichert. Der genaue Speicherort dieser Datei hängt von der jeweiligen Webserver-Software ab, die Sie verwenden. Im Fall von Tomcat finden Sie sie jedoch im lib-Unterverzeichnis des Tomcat-Hauptverzeichnisses (z. B. d:\Programme\Apache Group\jakarta). Tomcat-3.2.3\lib\servlet.jar). Damit der Java-Compiler Servlets kompilieren kann, müssen Sie diese Datei Ihrem Java-Klassenpfad hinzufügen. Java sucht standardmäßig nur nach Klassen im aktuellen Verzeichnis ("."). Also "." ist der Standardklassenpfad. Wenn Sie den Klassenpfad so ändern, dass er die Datei servlet.jar enthält (".; D: ...\lib\servlet.jar" unter Windows, ".:/Usr /.../lib/servlet.jar") in Unix ), dann sollte das Servlet gut kompilieren.

Sie können einen Klassenpfad angeben, der beim Ausführen von javac.exe wie folgt verwendet werden soll:

d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-Tomcat-3.2.3\lib\servlet.jar" MyServlet.Java

Oder in Linux javac verwendet: statt;

server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.Java

9
Frankline

In einer Linux-Umgebung funktioniert der Softlink anscheinend nicht. Sie müssen den physischen Pfad verwenden. Auf meinem Rechner habe ich zum Beispiel einen Softlink bei /usr/share/tomacat7/lib/servlet-api.jar, und wenn ich dieses Argument als Klassenpfad verwendet, führte dies zu einem fehlgeschlagenen Kompilieren mit demselben Fehler. Stattdessen musste ich /usr/share/Java/Tomcat-servlet-api-3.0.jar verwenden, die Datei, auf die der Softlink verweist.

6
Chezzwizz

Dies hat das Problem für mich gelöst:

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
5
Koray Tugay

Kopieren Sie die Datei " servlet-api.jar " vom Speicherort YOUR_INSTILLATION_PATH\Tomcat\lib\servlet-api.jar und fügen Sie die Datei in Ihr Java-Verzeichnis ein. YOUR_INSTILLATION_PATH\Java\jdk1.8.0_121\jre\lib\ext

das wird funktionieren (getestet).

3
Md Rehan

JSP und Servlet sind serverseitige Programmierung. Da es als integriertes Paket in einem Server wie Tomcat enthalten ist. Der Weg mag klug sein 

C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\jsp-api.jar
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar

Sie möchten dies tun, indem Sie dies auf folgende Weise hinzufügen 

Right Click> My Computer>Advanced>Environment Variables>System variables

Do> New..> Variable name:CLASSPATH
           Variable value:CLASSPATH=.;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;
2
Ravi Chandran

Fügen Sie servlet-api.jar in Ihren Klassenpfad ein. Es wird im lib-Ordner von Tomcat verfügbar sein.

2
Abhendra Singh

Selbst nachdem ich die vorgeschlagene Lösung ausprobiert hatte, konnte mein Problem nicht gelöst werden, da dort viele Instanzen des Java-Pfads von mir eingegeben wurden.

  1. Ich habe alle Java-bezogenen Pfade (verschiedene Java-Versionen) aus "Path, Java_HOME, JRE_HOME" entfernt und aus fresh erstellt.

  2. ich habe festgelegt (Pfad kann sich je nach Installation ändern)
    ein. Java_HOME als C:\Programme\Java\jdk1.8.0_191
    b. JRE_HOME als C:\Programme\Java\jdk1.8.0_191\jre\lib
    c. Fügen Sie den Pfad für die Binärdatei in den Pfad ein: C:\Programme\Java\jdk1.8.0_191\bin
    d. CLASSPATH als C:\Apache-Tomcat-7.0.93\lib

  3. versuchen Sie niemals, dieselbe Eingabeaufforderung einzugeben, wenn sie bereits geöffnet ist, während Sie Änderungen/Änderungen an System-/Benutzervariablen vornehmen. schließe es und öffne ein neues.

Referenzbild:  enter image description here 

0
Pankaj

Das habe ich gefunden. Hinzufügen von /usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar in meiner Umgebungsvariablen als CLASSPATH. OS ist iOS.

bei Verwendung von bash: ~/.bash_profile $CLASSPATH=/usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar

bei Verwendung von zsh: ~/.zshrc export CLASSPATH="usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar"

Erzwingen Sie es jetzt, arbeiten Sie, führen Sie source .bash_profile (oder .zshrc) .__ aus. Sie können den Computer neu starten, und es funktioniert für den aktuellen Benutzer.

0
Tiina