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?
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.
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.
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>
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.
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)
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
ajoutez la bibliothèque 'Server Runtime' à votre chemin de compilation java, et cela résoudra le problème.
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.
j'ai eu le même problème avec Spring, résolu en ajoutant Tomcat Server Runtime pour construire path.