2010-07-11 7 views
10

J'utilise Eclipse avec le plugin m2eclipse pour construire et gérer mon projet. En POM, j'ai inclus l'entrée pour servlet-api:maven + eclipse + servlet-api.jar

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
    </dependency> 

Scope est fourni, de ne pas inclure le fichier .jar à .WAR package, (il est déjà fourni par le conteneur de servlet tomcat). Compilation par mvn install est correcte, le fichier est pas inclus dans \ lib WEB-INF, le déploiement de tomcat travaille, le programme fonctionne, il est ok.

Mais, le cas commence à l'intérieur d'Eclipse. Après avoir démarré mon application Web d'Eclipse, je reçois l'erreur:

\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

Je ne sais pas pourquoi, parce que, dépendances Maven (y compris javac-servlet-2.5.jar) sont inclus comme Java EE Dépendances du module, et devrait être putted dans le dossier WEB-INF \ lib, tout en commençant à partir d'éclipse. D'autre part, dans eclipse, j'ai fourni le chemin vers mon répertoire apache tomcat, et dans le projet, il y a des références automatiques aux bibliothèques de Apache Tomcat v6.0 incluant servlet-api.jar.

Donc, fondamentalement, après removeing ​​référence du POM Servlet-api-2.5.jar, que dissapears bibliothèque de dépendances Maven, et je reçois pas d'exception lors du démarrage de mon application web de l'éclipse. Tout est bien ... en éclipse.

Bien sûr, sans entrée dans POM, cette fois installation mvn échoue avec la même exception, j'ai fourni plus tôt.

Existe-t-il un moyen de le faire fonctionner sans supprimer et insérer de référence, en fonction de ce que je veux faire: compiler avec maven ou exécuter avec Eclipse?

Cordialement

Répondre

5

Ce

\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

est tout simplement un avertissement du serveur d'applications qu'il ignore l'un de vos fichiers JAR inclus et ne sera pas le charger. Il peut être ignoré en toute sécurité. Cela ressemble au problème avec la partie/le plugin pour Eclipse qui charge votre projet dans un serveur d'applications intégré - il semble qu'il utilise simplement la liste des dépendances comme quoi regrouper comme chemin de la bibliothèque, et n'a pas de concept de Maven étendues.

Personnellement, je voudrais ignorer quelque chose comme ceci - votre build Maven fonctionne très bien, l'exécution de l'application dans Eclipse devrait fonctionner à côté de cet avertissement ignorable - sinon vous devrez aller dans le sens de peaufiner votre projet pour un outil attend (le plugin d'application web pour Eclipse) par rapport à un autre (Maven).

(J'ai toujours trouvé que courir webapps comme "projets Web" dans Eclipse est une douleur dans la crosse, et conduit à toutes sortes de bizarreries - ne vaut pas la peine - si vous voulez charger rapidement votre webapp Maven projet dans un conteneur de servlet, utilisez simplement mvn jetty:run ou mvn tomcat:run.La lutte contre les EDI peut être une perte de temps).

Questions connexes