web-dev-qa-db-fra.com

Erreur de compilation: le package javax.servlet n'existe pas

J'ai un paquet dans lequel j'importe javax.servlet. * Et javax.servlet.http. * Lorsque j'essaie de le compiler avec la commande Invite, l'erreur se produit.

le paquet javax.servlet n'existe pas

J'utilise JDK 1.7.0 et Tomcat 6.0.

54
Karadous

Vous devez ajouter le chemin d'accès au fichier /lib/servlet-api.jar de Tomcat au chemin d'accès aux classes lors de la compilation.

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

Le classpath est l'endroit où Java doit rechercher les dépendances importées. Dans le cas contraire, le dossier en cours, qui est inclus en tant que . dans l'exemple ci-dessus, est utilisé par défaut. Le ; est le séparateur de chemin pour Windows; Si vous utilisez un système d'exploitation basé sur Unix, vous devez utiliser plutôt :.

66
BalusC

Si vous travaillez avec le projet maven, ajoutez la dépendance suivante à votre pom.xml.

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

Est-ce un JSP ou une servlet?

Eh bien, ces deux packages ne sont pas réellement intégrés à Java comme Java.io. Au lieu de cela, ils sont livrés avec le serveur Web compatible Servlet (par exemple, Tomcat). Ainsi, avant que le compilateur Java puisse compiler notre Servlet, nous devons lui indiquer où trouver les classes dans ces deux packages.

Les classes requises sont normalement stockées dans un fichier appelé servlet.jar. L’emplacement exact de ce fichier dépend du logiciel de serveur Web que vous utilisez, mais vous pouvez le trouver dans le sous-répertoire lib du répertoire d’installation principal de Tomcat (par exemple, d:\Program Files\Apache Group\jakarta- Tomcat-3.2.3\lib\servlet.jar). Pour que le compilateur Java puisse compiler des servlets, vous devez ajouter ce fichier à votre chemin de classe Java. Par défaut, Java recherche uniquement les classes dans le répertoire actuel ("."). Ainsi, "." est le chemin de classe par défaut. Si vous modifiez le chemin de classe pour inclure le fichier servlet.jar (".; D: ...\lib\servlet.jar" sous Windows, ".:/Usr /.../ lib/servlet.jar" sous Unix ), alors le Servlet devrait bien compiler.

Vous pouvez spécifier un chemin de classe à utiliser lorsque vous exécutez javac.exe comme suit:

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

Ou sous Linux, javac utilise: au lieu de;

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

9
Frankline

Dans un environnement Linux, le lien symbolique ne fonctionne apparemment pas. vous devez utiliser le chemin physique. Par exemple, sur ma machine, j'ai un lien symbolique sur /usr/share/tomacat7/lib/servlet-api.jar et son utilisation en tant qu'argument de chemin de classe a entraîné l'échec de la compilation avec la même erreur. au lieu de cela, je devais utiliser /usr/share/Java/Tomcat-servlet-api-3.0.jar, qui est le fichier indiqué par le lien symbolique.

6
Chezzwizz

C'est ce qui a résolu le problème pour moi:

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

Copiez le fichier " servlet-api.jar " depuis l'emplacement YOUR_INSTILLATION_PATH\Tomcat\lib\servlet-api.jar et collez le fichier dans votre répertoire Java YOUR_INSTILLATION_PATH\Java\jdk1.8.0_121\jre\lib\ext

cela fonctionnera (testé).

3
Md Rehan

JSP et Servlet sont des programmes côté serveur. Comme il s'agit d'un package intégré dans un serveur tel que Tomcat. Le chemin peut être sage 

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

Juste que vous voulez faire est Ajouter ceci de la manière suivante 

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

Ajoutez servlet-api.jar dans votre chemin de classe. Il sera disponible dans le dossier lib de Tomcat.

2
Abhendra Singh

Même après avoir essayé la solution suggérée, cela ne résolvait pas mon problème, car de nombreuses instances de chemin Java étaient entrées par moi.

  1. J'ai supprimé tous les chemins liés à Java (version Java différente) de "Path, Java_HOME, JRE_HOME" et créé à partir de frais.

  2. j'ai mis (le chemin peut changer selon l'installation différente)
    une. Java_HOME en tant que C:\Program Files\Java\jdk1.8.0_191
    b. JRE_HOME en tant que C:\Program Files\Java\jdk1.8.0_191\jre\lib
    c. ajouter un chemin de fichier binaire dans le chemin: C:\Program Files\Java\jdk1.8.0_191\bin
    ré. CLASSPATH en tant que C:\Apache-Tomcat-7.0.93\lib

  3. n'essayez jamais dans la même commande Invite s'il est déjà ouvert lors de modifications/création de variables système/utilisateur. fermez-le et ouvrez-en un nouveau.

Image de référence:  enter image description here 

0
Pankaj

C'est ce que j'ai trouvé. Ajout de /usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar dans ma variable d'environnement en tant que CLASSPATH. Le système d'exploitation est iOS.

si vous utilisez bash: ~/.bash_profile $CLASSPATH=/usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar

si vous utilisez zsh: ~/.zshrc export CLASSPATH="usr/local/Apache-Tomcat-7.0.64/lib/servlet-api.jar"

Le forcer à fonctionner maintenant, lancez source .bash_profile (ou .zshrc) .__ ou vous pouvez redémarrer l'ordinateur et cela fonctionne pour l'utilisateur actuel.

0
Tiina