resolved - paquete javax.servlet.http no existe
the import javax servlet cannot be resolved (9)
Tengo jre7 y jdk1.7.0 instalados junto con Tomcat 7.0, pero muestra este error. servlet.http no es el único que "no existe", también hay otros componentes (servlet).
¿Puede alguien ayudarme con esto?
ACTUALIZACIÓN: este error se produce cuando intento el siguiente comando: javac -classpath servlet-api.jar WebTest.java
Debe agregar el classpath
para compilar. En tomcat
classpath="C:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar".
Así que el comando es
javac -classpath "c:/Program Files/Apache Software Foundation/Tomcat 6.0/lib/servlet-api.jar" yourfile.java .
En * nix, prueba:
javac -cp $CLASSPATH:$CATALINA_HOME/lib/servlet-api.jar Filename.java
O en Windows, intente:
javac -cp %CLASSPATH%;%CATALINA_HOME%/lib/servlet-api.jar Filename.java
Este error se produce cuando compila un programa java usando clases que soportan la API de Servlet. El compilador busca la biblioteca (incluida en un archivo .jar) utilizando CLASSPATH. Puede especificar esto cuando compila usando las opciones -classpath
o -cp
como se indica en otras respuestas, pero debe configurar su entorno para definir la classpath según sea necesario.
Configure la variable de entorno CLASSPATH para que haga referencia a la ubicación de servlet-api.jar
, que depende de su configuración (sistema operativo, cómo lo instaló, etc.)
Suponiendo que esté utilizando Tomcat y lo haya instalado de una de las 20 formas posibles, las API utilizadas por los servlets se instalarán en su sistema, en relación con el lugar donde esté instalado Tomcat. Por razones históricas, Tomcat también se conoce como "Catalina", por lo que puede usar el comando "catalina" para ejecutar ciertos comandos, y solo, informará, entre otras cosas, de la CATALINA_BASE
. Por ejemplo, en mi Mac usando Tomcat instalado usando homebrew es
Using CATALINA_BASE: /usr/local/Cellar/tomcat/8.5.9/libexec
La ubicación de las bibliotecas de servlets de Tomcat está debajo de esto en el directorio lib
. Establezca CATALINA_BASE, luego establezca CLASSPATH usando la base como un inicio, por ejemplo, para Linux u OSX, puede configurar esto en .profile
, o .bash_profile
así:
export CATALINA_BASE=/usr/local/Cellar/tomcat/8.5.9/libexec
export CLASSPATH=$CATALINA_BASE/lib/servlet-api.jar:$CLASSPATH
Salga del terminal / shell y vuelva para ejecutar el perfil. Debería poder ver que la variable se establece mediante el comando echo
, por ejemplo,
echo $CLASSPATH
o en Windows
echo %CLASSPATH%
Si muestra la ruta completa al jar `javac WebTest.java ''compile su clase.
Otras respuestas son correctas: configure su IDE (Eclipse, IntelliJ) para saber sobre Tomcat o compile con Maven y le ahorrará dolor.
La solución que funciona es agregar la siguiente dependencia a mi archivo pom.xml.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Si está trabajando con maven project, agregue la dependencia siguiente a su pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Si está usando Ant y está intentando construir, entonces necesita:
Especifique la ubicación del tomcat por
<property name="tomcat-home" value="C:/xampp/tomcat" />
Agregue tomcat libs a su ruta ya definida para jars por
<path id="libs"> <fileset includes="*.jar" dir="${WEB-INF}/lib" /> <fileset includes="*.jar" dir="${tomcat-home}/bin" /> <fileset includes="*.jar" dir="${tomcat-home}/lib" /> </path>
Si está utilizando la consola de comandos para compilar el servlet, debe incluir /lib/servlet-api.jar
de Tomcat en la ruta de /lib/servlet-api.jar
de compilación.
javac -cp .:/path/to/tomcat/lib/servlet-api.jar com/example/MyServlet.java
(use ;
lugar de :
como separador de ruta en Windows)
Si está utilizando un IDE, debe integrar Tomcat en el IDE y hacer referencia a él como tiempo de ejecución de destino en el proyecto. Si está utilizando Eclipse como IDE, vea también esto para obtener más detalles: ¿Cómo importo la API javax.servlet en mi proyecto de Eclipse?
Su variable CLASSPATH no apunta al directorio que contiene las clases javax. La variable CLASSPATH especifica dónde debe buscar el compilador java los recursos de archivos de clase java. Si no sabe buscar en el directorio javax, nunca encontrará el (los) archivo (s) que está buscando.
Todo lo que tienes que hacer es descargar el paquete servlet-api.jar. Cargue el paquete y reinicie la máquina virtual.