I have a package 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 have a package 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.
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 are working with maven project, then add following dependency to your pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Is it a JSP or Servlet?
Well, these two packages aren’t actually built into Java like java.io is. Instead, they come with the Servlet-capable Web server (e.g. Tomcat). So before the Java compiler will be able to compile our Servlet, we need to let it know where to find the classes in these two packages.
The classes required are normally stored in a file called servlet.jar. The exact location of this file will depend on the particular Web server software you use, but in the case of Tomcat you can find it in the lib subdirectory of the main Tomcat installation directory (e.g. d:\Program Files\Apache Group\jakarta-tomcat-3.2.3\lib\servlet.jar). For the Java compiler to be able to compile Servlets, you need to add this file to your Java class path. By default, Java looks for classes in the current directory (".") only. Thus, "." is the default class path. If you change the class path to include the servlet.jar file (".;d:...\lib\servlet.jar" under Windows, ".:/usr/.../lib/servlet.jar" in Unix), then the Servlet should compile just fine.
You can specify a class path to use when you run javac.exe as follows:
d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar" MyServlet.java
Or in Linux javac uses : instead of ;
server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java
In a linux environment the soft link apparently does not work. you must use the physical path. for instance on my machine I have a softlink at /usr/share/tomacat7/lib/servlet-api.jar
and using this as my classpath argument led to a failed compile with the same error. instead I had to use /usr/share/java/tomcat-servlet-api-3.0.jar
which is the file that the soft link pointed to.
This is what solved the problem for me:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
Copy the file "servlet-api.jar" from location YOUR_INSTILLATION_PATH\tomcat\lib\servlet-api.jar and Paste the file into your Java Directory YOUR_INSTILLATION_PATH\Java\jdk1.8.0_121\jre\lib\ext
this will work (tested).
Add servlet-api.jar into your classpath. It will be available into Tomcat's lib folder.
JSP and Servlet are Server side Programming. As it comes as an built in package inside a Server like Tomcat. The path may be like wise
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\jsp-api.jar
C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar
Just you want to Do is Add this in the following way
Right Click> My Computer>Advanced>Environment Variables>System variables
Do> New..> Variable name:CLASSPATH
Variable value:CLASSPATH=.;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar;
This is what I found. Adding /usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar in my environment variable as CLASSPATH. OS is iOS.
if using bash: ~/.bash_profile $CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar
if using zsh: ~/.zshrc export CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"
Force it work right now, run source .bash_profile
(or .zshrc)
or one can restart computer and it works for the current user.