La importación javax.servlet no se puede resolver [duplicate]

5 minutos de lectura

avatar de usuario
serpiente

estoy tratando de usar eclipse por Java EE para desarrollar aplicaciones web.

necesito usar Gato como mi servidor. He descargado Tomcat y se está ejecutando. Pero mi programa no compila.

Obtuve el siguiente error:

No se puede resolver la importación javax.servlet.

¿Que necesito hacer?

avatar de usuario
Richard Fearn

Debe agregar la API de Servlet a su classpath. En Tomcat 6.0, esto está en un JAR llamado servlet-api.jar en Tomcat lib carpeta. Puede agregar una referencia a ese JAR al classpath del proyecto, o poner una copia del JAR en su proyecto Eclipse y agregarlo al classpath desde allí.

Si quieres dejar el JAR en Tomcat’s lib carpeta:

  • Haga clic derecho en el proyecto, haga clic en Propiedades.
  • Elegir Ruta de compilación de Java.
  • Haga clic en el bibliotecas pestaña
  • Hacer clic Agregar JAR externos…
  • Navegar para encontrar servlet-api.jar y selecciónelo.
  • Hacer clic OK para actualizar la ruta de compilación.

O, si copia el JAR en su proyecto:

  • Haga clic derecho en el proyecto, haga clic en Propiedades.
  • Elegir Ruta de compilación de Java.
  • Hacer clic Añadir JAR…
  • Encontrar servlet-api.jar en su proyecto y selecciónelo.
  • Hacer clic OK para actualizar la ruta de compilación.

  • Tener una copia de un JAR específico de servletcontainer en /WEB-INF/lib haría que su aplicación no fuera portátil. Solo podrá ejecutarse exactamente en la misma marca/versión del servidor y no en otras marcas/versiones del servidor. NoClassDefFoundError volaría alrededor de tu cabeza.

    – BalusC

    7 de noviembre de 2010 a las 22:24


  • Nunca dije que debería entrar en WEB-INF/lib – solo que podría copiarse en el proyecto para que pueda agregarse a la ruta de compilación. Eso no significa necesariamente que se incluya en la GUERRA.

    – Richard Fearn

    7 de noviembre de 2010 a las 22:26

  • Aún así, eso es simplemente torpe y no es el enfoque recomendado.

    – BalusC

    7 de noviembre de 2010 a las 22:29


  • Es una solución alternativa. BalusC da la solución exacta a continuación.

    – Ahmet Karakaya

    5 de diciembre de 2012 a las 7:31

  • nada cambió agregando servlet-api.jar, proyecto > limpio lo hizo funcionar

    – Kimchoky

    7 de septiembre de 2017 a las 6:43


Si aún no lo ha hecho, debe integrar Tomcat en su Servidores vista. Haga clic derecho allí y elija Nuevo > Servidor. Seleccione la versión adecuada de Tomcat de la lista y complete el asistente.

Cuando creas un nuevo Proyecto web dinámicodebe seleccionar el servidor integrado de la lista como Tiempo de ejecución objetivo en el primer paso del asistente.

O cuando tienes una existente Proyecto web dinámicopuede configurarlo/cambiarlo en Tiempos de ejecución dirigidos entrada en las propiedades del proyecto. Eclipse luego agregará automáticamente todas sus bibliotecas a la ruta de compilación (¡sin tener una copia de ellas en el proyecto!).

  • @sage: Eclipse también hace eso para los nuevos proyectos creados después de integrar el servidor.

    – BalusC

    12 de febrero de 2014 a las 9:13

  • No funciona para mí, tengo todo como dijiste, pero aún no puedo resolver javax.servlet (usando Tomcat 8.0.3 como servidor)

    – romanos

    9 de marzo de 2014 a las 8:10

Debe establecer el alcance de la dependencia en ‘proporcionado’ en su POM.

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

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

Entonces todo estará bien.

Tuve el mismo problema porque mi “Proyecto web dinámico” no tenía referencia al servidor instalado que quería usar y, por lo tanto, no tenía referencia a la API de Servlet que proporciona el servidor.

Los siguientes pasos lo resolvieron sin agregar un Servlet-API adicional a Java Build Path (Versión Eclipse: Luna):

  • Botón derecho del ratón en su “Proyecto web dinámico”
  • Seleccione Propiedades
  • Seleccione Facetas del proyecto en la lista del lado izquierdo del asistente “Propiedades”
  • En el lado derecho del asistente, debería ver una pestaña llamada tiempos de ejecución. Seleccione la pestaña Tiempo de ejecución y revisa el servidor desea ejecutar el servlet.

Editar: si no hay ningún servidor en la lista, puede crear uno nuevo en la pestaña Tiempos de ejecución

avatar de usuario
Andrei

Agregar a pom.xml

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

  • Solo tenga en cuenta que, en caso de que este problema siga ocurriendo al usar maven, solo necesitamos reconstruir el proyecto nuevamente para que reconozca el cambio de las dependencias.

    – Cuong Vo

    23 de mayo de 2019 a las 2:09

avatar de usuario
Bozho

Añade el servlet-api.jar a su classpath. Puede tomarlo de la carpeta lib de tomcat.

  • Solo tenga en cuenta que, en caso de que este problema siga ocurriendo al usar maven, solo necesitamos reconstruir el proyecto nuevamente para que reconozca el cambio de las dependencias.

    – Cuong Vo

    23 de mayo de 2019 a las 2:09

avatar de usuario
varun

Si obtiene este error de compilación, significa que no ha incluido el servlet jar en el classpath. La forma correcta de incluir este jar es agregar el jar Server Runtime a su proyecto de eclipse. Debe seguir los pasos a continuación para solucionar este problema: Puede descargar servlet-api.jar desde aquí
http://www.java2s.com/Code/Jar/s/Downloadservletapijar.htm

Save it in directory. Right click on project -> go to properties->Buildpath and follow the steps.

Nota: Los frascos que se muestran en la pantalla no son correctos.

puede seguir el paso para configurar.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí

¿Ha sido útil esta solución?