Assurez-vous que vous avez la bonne version d'Eclipse et du serveur.
Assurez-vous que vous utilisez au moins IDE Eclipse pour Entreprise Développeurs Java (avec le Entreprise ). 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 la Web Tools Platform, WTP). Si vous disposiez déjà d'Eclipse IDE for Java (sans Enterprise) et que vous avez installé manuellement certains plugins connexes, il y a de fortes chances que cela n'ait pas été fait correctement. Vous feriez mieux de le jeter et de prendre le véritable Eclipse IDE for Enterprise Java.
Vous devez également vous assurer que vous avez déjà installé sur votre machine un servletcontainer qui met en œuvre au moins la même version de l'API Servlet que le servletcontainer de l'environnement de production, par exemple Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly etc. En général, il suffit de télécharger le fichier ZIP et de l'extraire. Dans le cas de Tomcat, faites no télécharger le format EXE, c'est 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 Java EE SDK téléchargeable sur Oracle.com contient essentiellement GlassFish. Donc, si vous avez déjà téléchargé Java EE SDK, vous avez déjà GlassFish. Notez également que par exemple GlassFish et JBoss AS/WildFly sont plus que de simples conteneurs de services, ils prennent également en charge JSF, EJB, JPA et toutes les autres fantaisies de Java EE. Voir aussi a.o. Qu'est-ce que Java EE exactement ?
Assurez-vous que vous utilisez le bon paquetage de servlets.
El javax.*
a été renommé en jakarta.*
depuis la version 5.0 de l'API Servlet qui fait partie de Jakarta EE 9 (Tomcat 10, TomEE 9, WildFly 22 Preview, GlassFish 6, Payara 6, Liberty 22, etc). Donc, si vous visez ces versions de serveur ou des versions plus récentes, vous devez remplacer
import javax.servlet.*;
import javax.servlet.http.*;
par
import jakarta.servlet.*;
import jakarta.servlet.http.*;
pour qu'il compile, sinon vous risquez d'être confronté à cette erreur de compilation
La superclasse "javax.servlet.http.HttpServlet" n'a pas été trouvée dans le chemin de construction de Java.
Intégrer le serveur dans Eclipse et l'associer au projet
Après avoir installé à la fois Eclipse for Enterprise Java et un servletcontainer sur votre machine, effectuez les étapes suivantes dans Eclipse :
-
Intégrer servletcontainer dans Eclipse
a. Via la vue des serveurs
-
Ouvrez le Serveurs dans la case du bas.
-
Cliquez-y avec le bouton droit de la souris et choisissez Nouveau > Serveur .
-
Choisissez la marque et la version appropriées de servletcontainer et suivez l'assistant.
b. Ou, via les préférences d'Eclipse
-
Ouvrir Fenêtre > Préférences > Serveur > Environnements d'exécution .
-
Puedes Ajouter , Editar y Retirer serveurs ici.
-
Associer le serveur au projet
a. Dans le nouveau projet
-
Ouvrez le Navigateur/explorateur de projet sur le côté gauche.
-
Cliquez-y avec le bouton droit de la souris et choisissez Nouveau > Projet et ensuite dans le menu Web > Projet Web dynamique .
-
Dans l'assistant, définissez le Durée d'exécution de la cible au serveur intégré.
b. Ou, dans un projet existant
Dans tous les cas, Eclipse prendra automatiquement les bibliothèques de servletcontainer dans le chemin de construction. Ainsi, vous pourrez importer et utiliser l'API Servlet.
Ne jamais transporter des fichiers JAR spécifiques au serveur
En tout état de cause, vous ne devriez pas avoir besoin de bricoler dans les Chemin de construction propriété du projet. Vous devez avant tout jamais copier/télécharger/déplacer/inclure manuellement les bibliothèques individuelles spécifiques à servletcontainer comme servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
, javaee.jar
etc. Cela ne ferait qu'entraîner des problèmes de portabilité, de compatibilité, de classpath et de maintenabilité, car votre application web ne fonctionnerait pas si elle était déployée dans un servletcontainer d'une marque/version différente de celle d'où proviennent ces bibliothèques.
Si vous utilisez Maven, vous devez absolument vous assurer que les bibliothèques spécifiques à servletcontainer qui sont déjà fournies par le runtime cible sont marquées comme <scope>provided</scope>
. Vous pouvez trouver des exemples de pom.xml
déclarations de dépendance pour Tomcat 10+, Tomcat 9-, JEE 9+ et JEE 8- dans cette réponse : Tomcat 9 coule les servlets vers javax.servlet.Servlet au lieu de jakarta.servlet.http.HttpServlet
Voici quelques exemples d'exceptions typiques que vous pouvez obtenir lorsque vous allumez le /WEB-INF/lib
ou même /JRE/lib
, /JRE/lib/ext
etc. avec des bibliothèques spécifiques à servletcontainer dans une tentative négligente de corriger les erreurs de compilation :
0 votes
J'essaie d'exécuter un simple servlet de type hello word, normalement si je voulais faire un gui, j'importerais java......swing.* ; je ne trouve pas le bon import pour un servlet.