Comment importer l’API javax.servlet dans mon projet Eclipse?

Je souhaite développer avec Servlets dans Eclipse, mais il est dit que le package javax.servlet ne peut pas être résolu. Comment puis-je append le package javax.servlet à mon projet Eclipse?

Assurez-vous d’avoir le bon Eclipse et le bon serveur

Assurez-vous d’utiliser au moins Eclipse IDE pour les développeurs Java EE (avec EE ). Il contient des outils de développement pour créer des projets Web dynamics et intégrer facilement des conteneurs de servlet (ces outils font partie de la plate-forme Web Tools, WTP). Si vous aviez déjà Eclipse IDE for Java (sans EE) et installé manuellement des plug-ins liés à EE, il y a des chances que cela n’ait pas été fait correctement. Vous feriez mieux de le détruire et de récupérer le véritable EDI Eclipse pour Java EE.

Vous devez également vous assurer que vous avez déjà installé un servletcontainer sur votre machine qui implémente au moins la même version d’API Servlet que le servletcontainer dans l’environnement de production, par exemple Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , etc. télécharger le fichier ZIP et l’extraire est suffisant. Dans le cas de Tomcat, ne téléchargez pas le format EXE, uniquement pour les environnements de production Windows. Voir aussi ao Plusieurs ports (8005, 8080, 8009) requirejs par Tomcat Server 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 du kit de développement Java EE sur Oracle.com contient essentiellement GlassFish. Si vous avez déjà téléchargé Java EE SDK, alors vous avez déjà GlassFish. Notez également que, par exemple, GlassFish et JBoss AS / WildFly sont plus qu’un simple conteneur de servlets, ils prennent également en charge JSF, EJB, JPA et toutes les autres fonctionnalités Java EE. Voir aussi ao Qu’est-ce que Java EE?


Intégrer le serveur dans Eclipse et l’associer à Project

Après avoir installé Eclipse pour Java EE et un conteneur de servlet sur votre machine, procédez comme suit dans Eclipse:

  1. Intégrer servletcontainer dans Eclipse

    une. Vue via serveurs

    • Ouvrez la vue Serveurs dans la zone inférieure.
    • Cliquez avec le bouton droit de la souris et choisissez Nouveau> Serveur .
    • Choisissez la marque et la version de servletcontainer appropriées et parcourez l’assistant.

      entrer la description de l'image ici

    b. Ou, via les préférences Eclipse

    • Ouvrez Fenêtre> Préférences> Serveur> Environnements d’exécution .
    • Vous pouvez append , modifier et supprimer des serveurs ici.

      entrer la description de l'image ici

  2. Associer un serveur à un projet

    une. Dans nouveau projet

    • Ouvrez le navigateur / explorateur de projet à gauche.
    • Cliquez avec le bouton droit de la souris et choisissez Nouveau> Projet , puis dans le menu Web> Projet Web dynamic .
    • Dans l’assistant, définissez Target Runtime sur le serveur intégré.

      entrer la description de l'image ici

    b. Ou, dans un projet existant

    • Cliquez avec le bouton droit sur le projet et choisissez Propriétés .
    • Dans la section Runtimes ciblés , sélectionnez le serveur intégré.

      entrer la description de l'image ici

    Dans les deux cas, Eclipse prendra automatiquement les bibliothèques du conteneur de servlet dans le chemin de compilation. De cette façon, vous pourrez importer et utiliser l’API Servlet.


Ne transportez jamais de fichiers JAR spécifiques au serveur.

Vous ne devriez en aucun cas avoir besoin de manipuler la propriété Build Path du projet. Vous ne devriez surtout jamais copier / télécharger / déplacer / inclure manuellement les bibliothèques spécifiques à servlet-api.jar comme servlet-api.jar , jsp-api.jar , el-api.jar , j2ee.jar , javaee.jar , etc. ne conduisent qu’à des problèmes futurs de portabilité, de compatibilité, de classpath et de maintenabilité, car votre application Web ne fonctionnerait pas lorsqu’elle est déployée dans un conteneur de servlet d’une marque / version différente de celle d’où ces bibliothèques sont d’origine.

Si vous utilisez Maven, vous devez vous assurer que les bibliothèques spécifiques à servletcontainer déjà fournies par le runtime cible sont marquées comme provided .

Voici quelques exceptions typiques que vous pouvez obtenir lorsque vous utilisez /WEB-INF/lib ou même /JRE/lib , /JRE/lib/ext , etc. avec des bibliothèques spécifiques à servletcontainer dans une tentative imprudente de corriger les erreurs de compilation:

  • java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit
  • java.lang.NoClassDefFoundError: javax / el / ELResolver
  • java.lang.NoSuchFieldError: IS_DIR
  • java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext () Ljavax / el / ELContext;
  • java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext (Ljavax / servlet / ServletContext;) Ljavax / servlet / jsp / JspApplicationContext;
  • org.apache.jasper.JasperException: La méthode getJspApplicationContext (ServletContext) n’est pas définie pour le type JspFactory
  • java.lang.VerifyError: (classe: org / apache / jasper / runtime / JspApplicationContextImpl, méthode: signature createELResolver: () Ljavax / el / ELResolver;) Argument incompatible pour fonctionner
  • pot non chargé. Voir la spécification Servlet 2.3, section 9.7.2. Classe incriminée: javax / servlet / Servlet.class

import javax.servlet

ÉTAPE 1

Accédez aux propriétés de votre projet (avec Alt + Entrée ou clic droit)

ÉTAPE 2

vérifiez sur Apache Tomcat v7.0 sous Targeted Runtime et cela fonctionne.

Peu de différence avec Hari:

Faites un clic droit sur le projet —> Propriétés —> Java Build Path —> Ajouter une bibliothèque … —> Serveur d’exécution —> Apache Tomcat —-> Terminer.

Incluez servlet-api.jar dans le dossier lib de votre serveur. entrer la description de l'image ici

Faites cette étape

entrer la description de l'image ici

Correction rapide – Cela a fonctionné dans Eclipse – Clic droit sur le projet -> Propriétés -> Chemin de la construction Java (Tab) -> Ajouter des JAR externes -> Localisez l’implémentation de l’API ji de servlet (si Tomcat s’appelle servlet-api.jar) -> cliquez sur OK. C’est tout !!

Ajoutez la dépendance javax.servlet dans pom.xml. Votre problème sera résolu.

  javax.servlet javax.servlet-api 3.0.1 provided  

vous pouvez simplement copier le servlet-api.jar et copier ces fichiers jar dans le dossier lib, qui se trouve dans WEB-INF. alors nettoyez et construisez votre projet, vos erreurs seront résolues.

  **OR** 

Vous pouvez directement append des fichiers JAR à la bibliothèque en utilisant les étapes suivantes.

  1. Clic droit sur le projet.
  2. Aller aux propriétés.
  3. Accédez à Java Build Path.
  4. Sélectionnez l’option Ajouter une bibliothèque dans les tabs.
  5. Ajouter des fichiers Jar
  6. donne le chemin de votre fichier servlet-api.jar .
  7. Nettoyez et construisez votre projet.

Je sais que c’est un ancien message. Cependant, j’ai observé une autre instance où Tomcat avait déjà été ajouté dans le projet mais nous avons toujours cette erreur. Cela a-t-il résolu cela:
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 FAIT!

J’espère que cela aide quelqu’un.

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("\n" + "\n" + "Hello WWW\n" + "\n" + "

Hello WWW

\n" + ""); } }

Cela, bien sûr, ne fonctionne que si vous avez ajouté le servlet-api.jar de servlet-api.jar à Eclipse. Généralement, votre serveur d’applications (par exemple, Tomcat ) aura le bon fichier jar.

Je recevais une exception de pointeur nul lors de la création du projet liée à “Dynamic Web Module”.

Pour que le projet se comstack (c’est-à- javax.servlet pour que javax.servlet puisse l’importer avec succès), je devais aller dans les propriétés du projet, sélectionner les facettes du projet dans la barre latérale, cocher Dynamic Web Module et cliquer sur Appliquer .

Étonnamment, cette fois la facette “Dynamic Web Module” installée correctement et l’importation a commencé à fonctionner.

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éparer, je devais aller dans Préférences-> Serveur-> Environnements d’exécution puis désinstaller et réinstaller Tomcat 7.

Beaucoup d’entre nous développent Eclipse via un projet Maven. Si tel est le cas, vous pouvez inclure des dépendances Tomcat dans Maven via les tomcat-servlet-api et tomcat-jsp-api . Un existe pour chaque version de Tomcat. Habituellement, l’ajout de ceux-ci avec la scope provided à votre POM suffit. Cela gardera votre construction plus portable.

Si vous mettez à niveau Tomcat ultérieurement, il vous suffit de mettre à jour la version de ces fichiers.

Pour les projets Maven, ajoutez la dépendance suivante:

   javax.servlet javax.servlet-api 3.0.1 provided  

Référence

Pour les projets de graduation:

 dependencies { providedComstack group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' } 

ou téléchargez javax.servlet.jar et ajoutez-le à votre projet.

Vous ne devriez surtout jamais copier / télécharger / déplacer / inclure manuellement les bibliothèques spécifiques à servletcontainer comme servlet-api.jar

@BalusC,

Je préférerais utiliser les classes exactes que mon application va utiliser plutôt que celles fournies par Eclipse (quand je me sens comme un développeur paranoïaque).

Une autre solution consisterait à utiliser Eclipse “Configure Build Path”> Libraries> Ajouter des fichiers Jars externes, et à append une API de servlet quel que soit le conteneur choisi.

Et suivez la solution de @kaustav datta lorsque vous utilisez ant pour construire – ayez une propriété comme tomcat.home ou weblogic.home. Cependant, il introduit une autre contrainte: le développeur doit installer Weblogic sur sa machine locale si weblogic est utilisé! Toute autre solution de nettoyage?