ne peut pas import javax.servlet.annotation.WebServlet;

j'ai commencé à écrire application qui peut fonctionner sur Google App Engine.

Mais quand J'ai voulu utiliser mon code de Netbeans to Eclipse j'ai eu une erreur sur:

 import javax.servlet.annotation.WebServlet;

et

 @WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})

les erreurs sont:

The import javax.servlet.annotation cannot be resolved
WebServlet cannot be resolved to a type

j'ai essayé d'importer l'api servlet.jar pour Eclipse, mais toujours le même, a également essayé de construire et de nettoyer le projet.

Je N'utilise pas Tomcat sur mon Eclipse n'en a que sur mes Netbeans.

Comment puis-je résoudre le problème?

31
demandé sur gnat 2011-09-29 14:13:03

10 réponses

j'ai essayé d'importer l'api servlet.jar pour eclipse, mais toujours le même aussi essayé de construire et de nettoyer le projet. Je n'utilise pas tomcat sur mon éclipse seulement l'avoir sur mon filet-haricots. Comment puis-je résoudre le problème.

Faire pas mettre le servlet-api.jar dans votre projet. C'est seulement pour attirer les ennuis. Vous devez cocher la section "facettes du projet de votre propriétés du projet si la facette Dynamic Web Module est définie à la version 3.0. Vous devez également vous assurer que votre /WEB-INF/web.xml (le cas échéant) est déclarée conforme Servlet 3.0. C'est-à-dire: la déclaration racine <web-app> doit correspondre à ce qui suit:

<web-app
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

pour pouvoir importer javax.servlet stuff, vous devez intégrer un servletcontainer fullworthy comme Tomcat dans Eclipse et ensuite le référencer dans Runtime ciblés des propriétés du projet. Vous pouvez faire la même chose pour Google App Engine .

encore une fois, ne pas copier des bibliothèques spécifiques à des conteneurs dans le projet webapp comme d'autres le suggèrent. Il ferait votre webapp unexecutabele sur les conteneurs de production d'une différente marque/version. Vous obtiendrez les erreurs/exceptions liées à classpath dans toutes les couleurs.

voir aussi:


sans rapport avec à la question concrète: GAE fait et non Servlet de soutien 3.0. Sa jetée sous-jacente 7.x container supporte le Servlet max 2.5 seulement.

53
répondu BalusC 2017-05-23 12:34:45

vérifiez que le numéro de version de votre servlet-api.jar est au moins 3.0. Il y a un numéro de version à l'intérieur du pot dans le fichier META-INF/manifest.mf :

Implementation-Version: 3.0.1

si elle est inférieure à 3,0 télécharger le 3.0.1 de Maven Central: http://search.maven.org/#artifactdetails/javax.servlet/javax.servlet-api/3.0.1/jar

anciennes spécifications des servlets (2.5, 2.4, etc.) ne supporte pas les annotations.

16
répondu palacsint 2011-09-29 11:19:59

si vous utilisez Maven et que vous ne voulez pas lier Tomcat dans le " Targeted Runtimes dans Eclipse, vous pouvez simplement ajouter la dépendance avec scope fourni dans votre pom.xml:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
11
répondu lazlev 2015-02-26 12:53:53

j'ai eu le même problème, il se trouve que j'ai fait configurer mon projet comme beaucoup d'entre vous l'ont dit plus haut, mais le problème a persisté, donc j'ai approfondi et j'ai découvert que J'utilisais Apache Tomcat 6 comme serveur D'exécution, donc la solution était simple, j'ai juste mis à jour le projet pour utiliser Apache Tomcat 7 et c'est tout, finalement L'IDE a reconnu javax.servlet.annotation.WebServlet annotation.

2
répondu grails-coder 2014-05-28 15:30:39
import javax.servlet.annotation.*;

(personne ne l'a écrit, mais le besoin de importer ceci comme WebInitparam N'est pas reconnu par les autres paquets)

2
répondu Sobbosachi 2014-06-30 19:14:03

passez à

window->Preference->server->runtime environment

ensuite, choisissez votre serveur tomcat. Si l'erreur est toujours là, alors

right click project->properties>Targeted Runtimes

puis vérifier le serveur

2
répondu Khaino 2014-09-18 05:33:05

ajoutez la bibliothèque 'Server Runtime' à votre chemin de compilation java, et cela résoudra le problème.

1
répondu user2038106 2013-02-03 22:29:32

si vous utilisez IBM RAD, assurez-vous de supprimer tout j2ee.jar dans l'onglet Chemin de compilation -> bibliothèques de vos projets, puis cliquez sur "Ajouter un jar externe" et sélectionnez le j2ee.jarre qui est livré avec RAD.

1
répondu Piyush Chordia 2015-04-14 11:09:57

j'ai eu le même problème avec Spring, résolu en ajoutant Tomcat Server Runtime pour construire path.

0
répondu murillo.cjr 2014-07-01 18:57:09

Vous devez ajouter votre servlet-api.le bocal pour le build path de votre projet. Regardez ici pour savoir comment faire.

-2
répondu Dirk 2011-09-29 10:16:37