Javac-Kommandozeilen-Kompilierungsfehler: Paket javax.servlet existiert nicht
Lesezeit: 4 Minuten
Karadous
Ich habe eine Servlet-Klasse, in die ich importiere javax.servlet.* Und javax.servlet.http.*. Wenn ich versuche, es in der Eingabeaufforderung zu kompilieren, erhalte ich die Fehlermeldung
Paket javax.servlet existiert nicht
Ich verwende JDK 1.7.0 und Tomcat 6.0. Ich kompiliere mit javac. Ich verwende kein Build-Tool wie Maven.
BalusC
Sie müssen den Pfad zu Tomcat hinzufügen /lib/servlet-api.jar Datei zum Klassenpfad der Kompilierzeit.
Im Klassenpfad muss Java nach importierten Abhängigkeiten suchen. Andernfalls wird standardmäßig der aktuelle Ordner verwendet, der als enthalten ist . im obigen Beispiel. Der ; ist das Pfadtrennzeichen für Windows; Wenn Sie ein Unix-basiertes Betriebssystem verwenden, müssen Sie verwenden : stattdessen.
Wenn Sie immer noch mit dem gleichen Kompilierungsfehler konfrontiert sind, und Sie sind Genau genommen Wenn Sie Tomcat 10 oder neuer verwenden, sollten Sie die Importe in Ihren Quellcode von migrieren javax.* Zu jakarta.*.
Falls Sie weiterverwenden möchten javax.* aus welchem Grund auch immer, dann sollten Sie auf Tomcat 9 oder älter downgraden, da dies die neueste Version war, die noch die alte verwendet javax.* Namensraum.
Siehe auch:
jakarta.servlet.ServletException: Klasse [com.practice.MyServlet] ist kein Servlet
Wie importiere ich die API javax.servlet / jakarta.servlet in mein Eclipse-Projekt?
Was genau ist Java EE?
stimmt, aber erwägen Sie in Zukunft, maven zu verwenden, um diese Art von Problemen für Sie zu lösen
– Kris
8. Februar 2012 um 12:44 Uhr
Oder nur eine IDE wie Eclipse. Ich würde jedoch empfehlen, weiter auf die harte Tour zu lernen, bis Sie es fast träumen können. Andernfalls wird es schwer zu verstehen, wie IDEs unter der Decke funktionieren.
– BalusC
8. Februar 2012 um 12:46 Uhr
Entschuldigung, wenn ich mehr als eine Servlet-Klasse habe, wie kann ich diese hinzufügen, um dieses Problem zu lösen? Danke
Das Gradle-Äquivalent ist dependencies { compile group: 'javax.servlet', name: 'servlet-api', version:'2.4' }
– MarkHu
15. Dezember 2016 um 1:47 Uhr
Lief wie am Schnürchen. Danke.
– raksheetbhat
23. Mai 2018 um 12:39 Uhr
Frankline
Ist es eine JSP oder ein Servlet?
Nun, diese beiden Pakete sind nicht wie java.io in Java integriert. Stattdessen kommen sie mit dem Servlet-fähigen Webserver (zB Tomcat). Bevor der Java-Compiler also unser Servlet kompilieren kann, müssen wir ihm mitteilen, wo die Klassen in diesen beiden Paketen zu finden sind.
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, aber im Fall von Tomcat finden Sie sie im Unterverzeichnis lib des Tomcat-Hauptinstallationsverzeichnisses (z. B. d:\Program Files\Apache Group\jakarta- tomcat-3.2.3\lib\servlet.jar). Damit der Java-Compiler Servlets kompilieren kann, müssen Sie diese Datei zu Ihrem Java-Klassenpfad hinzufügen. Standardmäßig sucht Java nur im aktuellen Verzeichnis (“.”) nach Klassen. Daher, “.” 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” unter 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:
sollte ich dies jedes Mal tun, wenn ich eine Datei kompiliere? Ich meine, gibt es eine Möglichkeit, den Klassenpfad für die ganze Zeit festzulegen, zu der ich eine Datei kompiliere.
– Karadous
8. Februar 2012 um 12:46 Uhr
Damit Sie die Datei, dh *.java, kompilieren können, müssen Sie sicherstellen, dass sich die servlet.jar im Klassenpfad befindet. Beachten Sie, dass JSPs schließlich in Servlets übersetzt werden, die natürlich Java-Dateien sind.
– Frankline
8. Februar 2012 um 13:22 Uhr
Jemand hat den Rat: “Wenn Sie Windows verwenden, fügt das Hinzufügen von d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar; zur JAVA_HOME-Variablen auch die Magie hinzu.”
– Kneipe
29. April 2012 um 16:21 Uhr
In einer Linux-Umgebung funktioniert der Softlink anscheinend nicht. Sie müssen den physischen Pfad verwenden. Zum Beispiel habe ich auf meiner Maschine einen Softlink an /usr/share/tomacat7/lib/servlet-api.jar und die Verwendung dieses Arguments als Klassenpfad führte zu einer fehlgeschlagenen Kompilierung mit demselben Fehler. stattdessen musste ich verwenden /usr/share/java/tomcat-servlet-api-3.0.jar Das ist die Datei, auf die der Softlink verwies.
Kopieren Sie die Datei “servlet-api.jar„vom Standort 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 geht (getestet).
Abhendra Singh
Fügen Sie servlet-api.jar zu Ihrem Klassenpfad hinzu. Es wird im lib-Ordner von Tomcat verfügbar sein.