Hola, descubrimos la respuesta a lo que buscas, deslízate y la encontrarás a continuación.
Solución:
Debe agregar la ruta a Tomcat’s /lib/servlet-api.jar
archivo al classpath de tiempo de compilación.
javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java
El classpath es donde Java necesita buscar dependencias importadas. De lo contrario, se establecerá de forma predeterminada en la carpeta actual que se incluye como .
en el ejemplo anterior. los ;
es el separador de ruta para Windows; si está usando un sistema operativo basado en Unix, entonces necesita usar :
en cambio.
Si aún enfrenta el mismo error de compilación y está Realmente usando Tomcat 10 o posterior, entonces debería migrar las importaciones en su código fuente desde javax.*
a jakarta.*
.
import jakarta.servlet.*;
import jakarta.servlet.http.*;
Ver también:
- jakarta.servlet.ServletException: Clase [com.practice.MyServlet] no es un servlet
Si está trabajando con un proyecto maven, agregue la siguiente dependencia a su pom.xml
javax.servlet
javax.servlet-api
3.0.1
provided
¿Es un JSP o Servlet?
Bueno, estos dos paquetes en realidad no están integrados en Java como lo está java.io. En su lugar, vienen con el servidor web compatible con Servlet (por ejemplo, Tomcat). Entonces, antes de que el compilador de Java pueda compilar nuestro Servlet, debemos informarle dónde encontrar las clases en estos dos paquetes.
Las clases requeridas normalmente se almacenan en un archivo llamado servlet.jar. La ubicación exacta de este archivo dependerá del software de servidor web particular que utilice, pero en el caso de Tomcat, puede encontrarlo en el subdirectorio lib del directorio principal de instalación de Tomcat (p. ej., d:Program FilesApache Groupjakarta- tomcat-3.2.3libservlet.jar). Para que el compilador de Java pueda compilar Servlets, debe agregar este archivo a su classpath de Java. De forma predeterminada, Java busca clases en el directorio actual (“.”) únicamente. De este modo, “.” es la vía de acceso de clases predeterminada. Si cambia la vía de acceso de clases para incluir el archivo servlet.jar (“.;d:…libservlet.jar” en Windows, “.:/usr/…/lib/servlet.jar” en Unix ), entonces el Servlet debería compilarse correctamente.
Puede especificar una vía de acceso de clases para usar cuando ejecuta javac.exe de la siguiente manera:
d:javadev> javac -classpath ".;d:Program FilesApache Group jakarta-tomcat-3.2.3libservlet.jar" MyServlet.java
O en Linux javac usa: en lugar de;
server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java
Si conservas alguna incertidumbre y forma de aclararse nuestro enunciado eres capaz de añadir una crítica y con gusto lo leeremos.