Ошибка: пакет javax.servlet.http не существует даже после добавления переменной CLASSPATH - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь реализовать базовую программу 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

Я добавил CLASSPATH для файлов jar

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

Что я делаю не так?Пожалуйста, помогите ..

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Это была ошибка с моей стороны.

Вот так я и создал свой CLASSPATH через командную строку

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

Созданный мной каталог не был ApacheTomcat, но это был Apache Tomcat(с пробелом между ними). ​​

Возможно, именно поэтому переменная CLASSPATH не смогла распознать правильное местоположение.

Я изменил имя каталога на ApacheTomcat (удалил пробел).

Теперь я определил переменную CLASSPATH в файле .bashrc следующим образом:

#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
0 голосов
/ 05 октября 2018

Classpath с * в конце не работает с наборами данных jar.Вы должны поместить каждую баночку в свой путь к классу.

0 голосов
/ 04 октября 2018

Когда вы компилируете свой Java-класс, вы можете использовать аргументы -cp, чтобы указать путь / библиотеки классов, требуемые вашим классом.Для вашего случая вам необходимо предоставить servlet-api.jar.Вы можете скомпилировать свой сервлет как:

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

...