Error: package javax.servlet.http does not exist even after adding the CLASSPATH variable

Error: package javax.servlet.http does not exist even after adding the CLASSPATH variable

我正在尝试实施基本的 HelloServlet.java 程序。 但它似乎产生了这些错误

HelloServlet.java:7: error: cannot find symbol
public class HelloServlet extends HttpServlet {
                                  ^
  symbol: class HttpServlet
HelloServlet.java:11: error: cannot find symbol
   public void init() throws ServletException {
                             ^
  symbol:   class ServletException
  location: class HelloServlet
HelloServlet.java:16: error: cannot find symbol
   public void doGet(HttpServletRequest request, HttpServletResponse response)
                     ^
  symbol:   class HttpServletRequest
  location: class HelloServlet
HelloServlet.java:16: error: cannot find symbol
   public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                 ^
  symbol:   class HttpServletResponse
  location: class HelloServlet
HelloServlet.java:17: error: cannot find symbol
      throws ServletException, IOException {
             ^
  symbol:   class ServletException
  location: class HelloServlet
HelloServlet.java:3: error: package javax.servlet does not exist
import javax.servlet.*;
^
HelloServlet.java:4: error: package javax.servlet.http does not exist
import javax.servlet.http.*;
^
7 errors

我已经为 jar 文件添加了 CLASSPATH

nithinchandranp@b-40:~$ echo ${CLASSPATH}
/home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/*
nithinchandranp@b-40:~$ 

现在我做错了什么? 请帮忙..

编译 java class 时,您可以使用 -cp 参数来提供 class 所需的 class 路径/库。对于您的情况,您需要提供给 servlet-api.jar。您可以像这样编译您的 Servlet:

javac -cp /usr/local/Cellar/tomcat/9.0.6/libexec/lib/servlet-api.jar HelloServlet.java

这是我的失误。

这就是我通过命令行创建 CLASSPATH 的方式

 export CLASSPATH=/home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/*

我创建的目录不是 ApacheTomcat,而是 Apache Tomcat(中间有一个 space)。

也许这就是 CLASSPATH 变量无法识别正确位置的原因。

我把目录名改成了ApacheTomcat(去掉了space)。

现在我在.bashrc文件中定义了CLASSPATH变量如下:

#classpath
export CLASSPATH=/home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/*

现在当我执行 echo${CLASSPATH} 时,我得到了我提到的所有 jar 文件。

nithinchandranp@b-40:~$ echo ${CLASSPATH}
/home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/annotations-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/catalina-ant.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/catalina-ha.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/catalina.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/catalina-storeconfig.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/catalina-tribes.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/ecj-4.6.3.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/el-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/jasper-el.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/jasper.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/jaspic-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/jsp-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/servlet-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-api.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-coyote.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-dbcp.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-i18n-es.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-i18n-fr.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-i18n-ja.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-i18n-ru.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-jdbc.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-jni.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-util.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-util-scan.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/tomcat-websocket.jar /home/nithinchandranp/ApacheTomcat/apache-tomcat-8.5.34/lib/websocket-api.jar

末尾带有 * 的类路径不适用于 jar 数据集。您必须将每个 jar 放在您的类路径中。