2011-06-30 2 views
1

Je développe une application de serveur Java avec Eclipse Indigo, qui est déployée sur Jetty. Maintenant j'essaye d'ajouter l'authentification à l'application avec la sécurité de ressort. J'ai ajouté la définition suivante à mon business-layer-context.xml:Utilisation de l'API servlet avec Eclipse

<security:http> 
     <security:intercept-url pattern="/**" access="ROLE_USER" /> 
     <security:http-basic /> 
</security:http> 

Maintenant, le problème est que Eclipse me donne cette erreur: Une erreur est survenue traitement « /MyServer/WEB-INF/business-layer-context.xml », qui est provoquée par java.lang.NoClassDefFoundError: javax/servlet/Filter. Lorsque je déploie l'application sur Jetty, cela fonctionne très bien, car Jetty contient l'API servlet.
Quelle serait la meilleure façon de faire comprendre à Eclipse que l'application est déployée dans un conteneur de servlet et que l'API est donc disponible? Je pourrais ajouter le JAR du servlet Jetty au projet de construction dans Eclipse, mais cela nécessiterait que chaque développeur configure le chemin d'accès à Jetty dans Eclipse, et je voudrais garder les configurations spécifiques au développeur au minimum.
Alors, y a-t-il une meilleure façon de se débarrasser de l'erreur?

Répondre

4

Vous devez inclure servlet-api.jar ou JAR approprié qui implémente l'API Java Servlet dans le chemin de génération de votre projet.

Dans Eclipse, vous devez:

  • Faites un clic droit de votre projet, puis "Propriétés".
  • « chemin de génération Java » -> « Bibliothèques »
  • Cliquez sur le bouton « Ajouter des fichiers JAR externes » et trouver servlet-api.jar ou tout jar pertinent qui implémente l'API Java Servlet.

Une fois que vous avez terminé, cliquez sur OK et reconstruisez votre projet. Le fichier jar peut être trouvé dans le dossier Jetty lib puisqu'il exécute votre application de servlet.

+0

Donc, je suppose que cela signifie qu'il n'y a pas de meilleure façon? Dans ce cas, je vais régler avec ceci pour le moment. Merci quand même. – Carlos

+0

@Carlos, vous n'avez pas besoin de vous inquiéter car vous travaillerez avec les interfaces de l'API Servlet et non avec les implémentations Jetty de l'API. –

+0

Ce qui m'inquiète, c'est qu'il y aura une dépendance à un fichier externe dans mon chemin de compilation. – Carlos

0

Ajoutez la bibliothèque du serveur à votre projet lib et ajoutez-la au classpatH.

+0

Une autre approche à laquelle je pensais, mais qui ne semble pas séduisante non plus puisque j'aurais besoin d'ajouter une autre bibliothèque inutile à mon projet juste pour satisfaire Eclipse. – Carlos