2009-11-08 6 views
0

J'essaie d'apprendre comment développer une servlet pour fonctionner sous le serveur Tomcat d'Apache sous Windows XP. J'utilise Tomcat 6.0 avec Java SDK 1.6.0_17. Ma webapp est un simple Hello, type de monde que je construis avec la dernière version de l'IDE Eclipse. Je suis capable d'exécuter tous les exemples dans l'installation de Tomcat mais quand j'exporte mon application d'Eclipse vers le dossier webapps de Tomcat et que j'essaie d'y accéder à partir de mon navigateur, j'obtiens des erreurs indiquant que la classe javax.servlet.http.Servlet ne peut pas être a trouvé. J'ai cherché dans l'arborescence du SDK et je n'ai rien trouvé avec javax dans le nom, donc je suppose que ce n'est pas là.Problème de servlet Tomcat - classe non trouvée

J'ai fait un tour de table mais je n'ai rien trouvé avec ce problème précis. Des suggestions que je peux essayer?

+0

Cela ressemble à quelque chose est cassé. Pourriez-vous localiser l'endroit où la classe javax.servlet.http.Servlet est utilisée dans votre propre code, et où se trouve l'implémentation Eclipse, (utilisez F3 pour y aller rapidement et regardez dans l'Explorateur de projet (si synchronisé avec le éditeur)). –

Répondre

4

la classe Servlet dans servlet.jar, qui fait partie de Java EE (la partie "Enterprise" de Java) et non la distribution JDK standard. C'est généralement dans le classpath de Tomcat, donc une fois que vous avez déployé votre application sur Tomcat, vous avez peu de difficulté à la trouver. Habituellement, le problème avec ce fichier est qu'il ne se trouve normalement pas dans le chemin d'accès aux classes d'Eclipse, ce qui se traduit par des problèmes de compilation. Si cela manque vraiment à l'exécution sur Tomcat, essayez de le chercher dans les dépendances de la bibliothèque de votre projet (je ne sais jamais où cache Eclipse) et copiez-le dans le sous-répertoire "common/lib" de votre installation Tomcat.

2

Il devrait être disponible dans servlet-api.jar dans le propre classpath de Tomcat, c'est-à-dire le dossier Tomcat/lib.

Si vous obtenez cette erreur particulière, il y en a probablement plus. Vous avez peut-être dupliqué une ou plusieurs des propres bibliothèques de Tomcat (l'un des fichiers dans Tomcat/lib) dans Eclipse ou, pire, dans les JDK/lib. Tu ne devrais pas faire ça. Conservez toutes les bibliothèques par défaut là où elles appartiennent. Ne jamais les dupliquer/les déplacer. Ne les référencez que

Si vous souhaitez développer webapps en utilisant Eclipse, vous devriez avoir obtenu au moins la Eclipse pour développeurs Java EE et Tomcat intégré dans Eclipse dans la vue Servers et ont créé une Dynamic Web Project dans laquelle vous avez sélectionné le Tomcat ci-intégré instance en tant qu'instance de serveur par défaut.

Pour plus de conseils sur l'utilisation conjointe de Eclipse et Tomcat, vous pouvez trouver this tutorial utile (vous pouvez ignorer complètement et ignorer la partie JSF si cela ne vous intéresse pas).

Édition: J'ai réalisé que la classe javax.servlet.http.Servlet n'existe pas. Vous devez soit javax.servlet.Servlet ou javax.servlet.http.HttpServlet. Mais cela aurait déjà échoué lors de compiletime, pas pendant l'exécution, donc votre problème n'était peut-être pas très précis.

+0

Une correction à cela: Le servlet-api.jar est le petit frère de servlet.jar: Il satisfait les dépendances assez pour éviter les erreurs de compilation, donc c'est généralement dans le chemin de compilation d'Eclipse; mais pour la fonctionnalité réelle, il faut que servlet.jar soit disponible là où la webapp est en cours d'exécution. –

+0

Le nom de fichier est spécifique au serveur d'applications. Tomcat n'a pas de servlet.jar, mais l'appelle servlet-api.jar. – BalusC

+0

addendum: et Eclipse ne peut le trouver que si vous avez intégré le serveur dans Eclipse et l'avez associé au projet. Vous ne devez PAS le copier/référencer manuellement dans le chemin de compilation Eclipse. – BalusC