no se puede importar javax.servlet.annotation.WebServlet;
eclipse servlets (10)
Empecé a escribir aplicaciones que se pueden ejecutar en Google App Engine.
Pero cuando quise usar mi código de Netbeans para Eclipse tuve un error en:
import javax.servlet.annotation.WebServlet;
y
@WebServlet(name = "MyServlet", urlPatterns = {"/MyServlet"})
los errores son:
The import javax.servlet.annotation cannot be resolved
WebServlet cannot be resolved to a type
Traté de importar el servlet-api.jar a Eclipse pero igual, también intenté construir y limpiar el proyecto.
No uso Tomcat en mi Eclipse, solo lo tengo en mi Netbeans.
¿Cómo puedo resolver el problema?
Intenté importar el servlet-api.jar para eclipsar, pero igual intenté construir y limpiar el proyecto. No uso Tomcat en mi eclipse, solo lo tengo en mi net-beans. ¿Cómo puedo resolver el problema?
No coloque el servlet-api.jar
en su proyecto. Esto solo está pidiendo problemas. Debe verificar en la sección Facetas del proyecto de las propiedades de su proyecto si la faceta Dynamic Web Module está configurada en la versión 3.0. También debe asegurarse de que su /WEB-INF/web.xml
(si existe) ha sido declarado conforme a la especificación Servlet 3.0. Es decir, la declaración de raíz <web-app>
debe coincidir con lo siguiente:
<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">
Para poder importar cosas de javax.servlet
, necesita integrar un servletcontainer completo como Tomcat en Eclipse y luego hacer referencia a él en los tiempos de ejecución específicos de las propiedades del proyecto. Puedes hacer lo mismo con Google App Engine .
Una vez más, no copie las bibliotecas específicas del contenedor en el proyecto de webapp como sugieren otros. Haría que su aplicación web no se ejecute en contenedores de producción de una marca / versión diferente. Obtendrá errores / excepciones relacionados con la classpath en todos los colores.
Ver también:
No relacionado con la pregunta concreta: GAE no es compatible con Servlet 3.0. Su contenedor Jetty 7.x subyacente solo admite Servlet 2.5 máximo.
Agregue la biblioteca ''Server Runtime'' a su ruta de compilación java, y resolverá el problema.
Compruebe que el número de versión de su servlet-api.jar
sea al menos 3.0. Hay un número de versión dentro del contenedor en el archivo META-INF/manifest.mf
:
Implementation-Version: 3.0.1
Si es menos de 3.0 descarga el 3.0.1 de Maven Central: http://search.maven.org/#artifactdetails|javax.servlet|javax.servlet-api|3.0.1|jar
Las antiguas especificaciones de servlet (2.5, 2.4, etc.) no son compatibles con las anotaciones.
Ir
window->Preference->server->runtime environment
luego elige tu servidor Tomcat. Si el error sigue ahí, entonces
right click project->properties>Targeted Runtimes
luego verifica el servidor
Si está utilizando IBM RAD, asegúrese de eliminar cualquier j2ee.jar en la ruta de creación de proyectos -> pestaña de bibliotecas, y luego haga clic en "agregar jar externo" y seleccione el j2ee.jar que se envía con RAD.
Si está utilizando Maven y no desea vincular Tomcat en los tiempos de ejecución específicos en Eclipse, simplemente puede agregar la dependencia con el alcance proporcionado en su pom.xml:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Tuve el mismo problema al usar Spring, que se solucionó al agregar Tomcat Server Runtime para compilar la ruta.
Tuve el mismo problema, resulta que mi proyecto se configuró como muchos de ustedes indicaron anteriormente, pero el problema persistió, así que profundicé y me di cuenta de que estaba usando Apache Tomcat 6 como mi servidor Runtime, por lo que la solución era simple. , Acabo de actualizar el proyecto para usar Apache Tomcat 7 y eso es todo, finalmente el IDE reconoció la anotación javax.servlet.annotation.WebServlet .
import javax.servlet.annotation.*;
(nadie ha escrito esto, pero necesita importar esto porque WebInitparam no es reconocido por los otros paquetes)