Search code examples
javaservletscompiler-errorsjavac

javac command line compile error: package javax.servlet does not exist


I have a Servlet class in which I import javax.servlet.* and javax.servlet.http.*. When I try to compile it in command prompt I get the error

package javax.servlet does not exist

I use JDK 1.7.0 and Tomcat 6.0. I compile using javac. I am not using a build tool like Maven.


Solution

  • You need to add the path to Tomcat's /lib/servlet-api.jar file to the compile time classpath.

    javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java
    

    The classpath is where Java needs to look for imported dependencies. It will otherwise default to the current folder which is included as . in the above example. The ; is the path separator for Windows; if you're using an Unix based OS, then you need to use : instead.

    If you're still facing the same complation error, and you're actually using Tomcat 10 or newer, then you should be migrating the imports in your source code from javax.* to jakarta.*.

    import jakarta.servlet.*;
    import jakarta.servlet.http.*;
    

    In case you want to keep using javax.* for whatever reason, then you should be downgrading to Tomcat 9 or older as that was the latest version still using the old javax.* namespace.

    See also: