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.
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.
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>
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
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.
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>
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).
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;
Fügen Sie servlet-api.jar in Ihren Klassenpfad ein. Es wird im lib-Ordner von Tomcat verfügbar sein.
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.
Ich habe alle Java-bezogenen Pfade (verschiedene Java-Versionen) aus "Path, Java_HOME, JRE_HOME" entfernt und aus fresh erstellt.
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
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.
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.