Je souhaite développer avec les servlets dans Eclipse, mais il est indiqué que le package javax.servlet
ne peut pas être résolu. Comment puis-je ajouter le package javax.servlet
à mon projet Eclipse?
Assurez-vous que vous utilisez au moins Eclipse IDE pour les développeurs Java EE (avec le EE). Il contient des outils de développement permettant de créer des projets Web dynamiques et d’intégrer facilement des conteneurs de servlets (ces outils font partie de Web Tools Platform, WTP). Si vous avez déjà eu Eclipse IDE pour Java (sans EE) et installé manuellement des plug-ins liés à EE, il y a de fortes chances que cela ne se soit pas fait correctement. Vous feriez mieux de le supprimer et de récupérer le véritable Eclipse IDE pour Java EE.
Vous devez également vous assurer qu'un servletcontainer est déjà installé sur votre ordinateur et qu'il implémente au moins la même version de l'API Servlet que le servletcontainer dans l'environnement de production, par exemple Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , etc. Habituellement, il suffit de télécharger le fichier Zip et de l'extraire. Dans le cas de Tomcat, effectuez not , téléchargez le format EXE, uniquement pour les environnements de production basés sur Windows. Voir aussi a.o. Plusieurs ports (8005, 8080, 8009) requis par le serveur Tomcat sur localhost sont déjà utilisés .
Un servletcontainer est une implémentation concrète de l'API Servlet. Notez que le téléchargement Java EE SDK sur Oracle.com contient essentiellement GlassFish. Ainsi, si vous avez déjà téléchargé le SDK Java EE, vous disposez déjà de GlassFish. Notez également que, par exemple, GlassFish et JBoss AS/WildFly sont plus = juste un servletcontainer, ils prennent également en charge JSF, EJB, JPA et toutes les autres fonctionnalités de Java EE. Voir aussi a.o. Qu'est-ce que Java EE?
Une fois que vous avez installé Eclipse pour Java EE et un servletcontainer sur votre ordinateur, procédez comme suit dans Eclipse:
Intégrer servletcontainer dans Eclipse
une. Via la vue Serveurs
Choisissez la marque et la version de servletcontainer appropriées et suivez l'assistant.
b. Ou, via les préférences Eclipse
Associer un serveur à un projet
une. Dans un nouveau projet
Dans l'assistant, définissez le Target Runtime sur le serveur intégré.
b. Ou, dans le projet existant
Dans la section Runtimes ciblés , sélectionnez le serveur intégré.
Quoi qu'il en soit, Eclipse prendra alors automatiquement les bibliothèques de servletcontainer dans le chemin de construction. De cette façon, vous pourrez importer et utiliser l'API Servlet.
Dans tous les cas, vous ne devriez pas avoir besoin de bidouiller dans la propriété Build Path du projet. Vous devez avant tout ne jamais copier/télécharger/déplacer/inclure manuellement les bibliothèques spécifiques à un servletcontainer telles que servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
, javaee.jar
, etc. Cela ne conduirait qu'à de futurs problèmes de portabilité, de compatibilité, de chemin de classe et de maintenabilité, car votre application Web ne fonctionnerait pas lorsqu'elle serait déployée dans un conteneur de servlet d'une marque/version différente de celle à laquelle ces bibliothèques ont été obtenues.
Si vous utilisez Maven, vous devez absolument vous assurer que les bibliothèques spécifiques à servletcontainer déjà fournies par le runtime cible sont marquées avec le code <scope>provided</scope>
.
Voici quelques exceptions typiques que vous pouvez obtenir lorsque vous écrivez le /WEB-INF/lib
ou même le /JRE/lib
, le /JRE/lib/ext
, etc. avec les bibliothèques spécifiques à servletcontainer lors d'une tentative négligente de corriger les erreurs de compilation:
Petite différence avec Hari:
Faites un clic droit sur le projet ---> Propriétés ---> Chemin de construction Java ---> Ajouter une bibliothèque ... ---> Exécution serveur ---> Apache Tomcat ----> Terminer.
Incluez servlet-api.jar à partir du dossier lib du serveur.
Faites cette étape
Solution rapide - Cela fonctionnait dans Eclipse - Clic droit sur le projet -> Propriétés -> Chemin de construction Java (onglet) -> Ajouter des fichiers JAR externes -> localisez l'implémentation de l'API jar du servlet (si Tomcat - son nommé servlet-api.jar) -> cliquez sur OK. C'est tout !!
Ajoutez la dépendance javax.servlet dans pom.xml. Votre problème sera résolu.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Je sais que c'est un ancien post. Cependant, j'ai observé un autre cas où Tomcat avait déjà été ajouté dans le projet, mais nous obtenons toujours cette erreur. Est-ce que ceci a résolu ceci:
Alt + Entrée
Facettes du projet
À droite, à côté des détails, se trouve un autre onglet "Runtimes". Le serveur Tomcat installé y sera répertorié. Sélectionnez le.
Enregistrez la configuration et DONE!
J'espère que ça aide quelqu'un.
vous pouvez simplement copier le servlet-api.jar
et copier ces fichiers jar dans le dossier lib, qui se trouve dans WEB-INF. puis nettoyez et construisez votre projet, vos erreurs seront résolues.
**OR**
vous pouvez directement ajouter des fichiers JAR à la bibliothèque en procédant comme suit.
servlet-api.jar
.De 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>");
}
}
Ceci, bien sûr, ne fonctionne que si vous avez ajouté le servlet-api.jar
au chemin de compilation Eclipse. Généralement, votre serveur d’application (par exemple Tomcat ) aura le bon fichier jar.
Pour les projets maven, ajoutez la dépendance suivante:
<!-- 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>
Pour les projets de graduation:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
ou téléchargez javax.servlet.jar
et ajoutez-le à votre projet.
Nous sommes nombreux à nous développer dans Eclipse via un projet Maven. Si tel est le cas, vous pouvez inclure des dépendances Tomcat dans Maven via les fichiers jar Tomcat-servlet-api
et Tomcat-jsp-api
. Il en existe une pour chaque version de Tomcat. Généralement, l'ajout de ceux-ci avec la portée provided
à votre POM suffit. Cela gardera votre construction plus portable.
Si vous mettez à jour Tomcat à l'avenir, il vous suffira également de mettre à jour la version de ces fichiers jar.
Dans mon cas, lorsque je suis allé à l'écran Targetted Runtimes, Tomcat 7 n'était pas répertorié (désactivé) malgré son installation.
Pour résoudre ce problème, je devais aller dans Préférences-> Serveur-> Environnements d'exécution puis désinstaller et réinstaller Tomcat 7.
Je recevais une exception de pointeur null lors de la création du projet lié au "module Web dynamique".
Pour que le projet soit compilé (c’est-à-dire que javax.servlet
soit importé avec succès), je devais accéder aux propriétés du projet , choisissez Facettes du projet dans la barre latérale, cochez Module Web dynamique et cliquez sur Appliquer .
Étonnamment, cette fois, la facette "Module Web dynamique" est installée correctement et l'importation commence à fonctionner.
Surtout, vous ne devriez jamais jamais copier/télécharger/déplacer/inclure manuellement les bibliothèques spécifiques à servletcontainer telles que servlet-api.jar.
@BalusC,
Je préférerais utiliser les classes exactes utilisées par mon application plutôt que celles fournies par Eclipse (lorsque je me sens comme un développeur paranoïaque).
Une autre solution consisterait à utiliser Eclipse "Configurer le chemin de construction"> Bibliothèques> Ajouter des fichiers JAR externes et à ajouter une API de servlet, quel que soit le conteneur choisi.
Et suivez la solution de @kaustav datta lorsque vous utilisez ant pour construire - possédez une propriété comme Tomcat.home ou weblogic.home. Cependant, cela introduit une autre contrainte que le développeur doit installer Weblogic sur sa machine locale si weblogic est utilisé! Une autre solution plus propre?
Cela pourrait être aussi la raison. Je suis venu avec après pom.xml
.
<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>
Le problème non résolu était dû à l'exclusion de spring-boot-starter-Tomcat
. Supprimez simplement la dépendance <exclusions>...</exclusions>
, le problème sera résolu, mais assurez-vous cela exclura également le serveur Tomcat intégré.
Si vous avez également besoin d'un serveur Tomcat intégré, vous pouvez ajouter la même dépendance avec compile scope
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>compile</scope>
</dependency>