Пакета javax.servlet.http не существует
У меня установлены jre7 и jdk1.7.0 вместе с Tomcat 7.0, но он показывает эту ошибку. servlet.http не единственный, который "не существует", есть и другие (сервлет.) компоненты.
Может ли кто-нибудь помочь мне с этим?
UPDATE:
Эта ошибка возникает, когда я пытаюсь выполнить следующую команду:
javac -classpath servlet-api.jar WebTest.java
Ответы
Ответ 1
Ваша переменная CLASSPATH не указывает на каталог, содержащий классы javax. Переменная CLASSPATH указывает, где компилятор java должен искать файловые ресурсы класса Java. Если он не знает, чтобы посмотреть в каталоге javax, он никогда не найдет файлы, которые вы после него.
Ответ 2
Если вы работаете с проектом maven, добавьте следующую зависимость к вашему pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Ответ 3
Если вы используете командную консоль для компиляции сервлета, вы должны включить Tomcat /lib/servlet-api.jar
в путь к компиляции.
javac -cp .:/path/to/tomcat/lib/servlet-api.jar com/example/MyServlet.java
(используйте ;
вместо :
как разделитель путей в Windows)
Если вы используете IDE, вам следует интегрировать Tomcat в среду IDE и ссылаться на нее как на целевую среду выполнения в проекте. Если вы используете Eclipse в качестве среды IDE, см. Также это для более подробной информации: Как импортировать API javax.servlet в проект Eclipse?
Ответ 4
Включить * nix, попробуйте:
javac -cp $CLASSPATH:$CATALINA_HOME/lib/servlet-api.jar Filename.java
Или в Windows попробуйте:
javac -cp %CLASSPATH%;%CATALINA_HOME%\lib\servlet-api.jar Filename.java
Ответ 5
Если вы используете Ant и пытаетесь построить, вам необходимо:
-
Укажите расположение tomcat <property name="tomcat-home" value="C:\xampp\tomcat" />
-
Добавьте tomcat libs к вашему уже определенному пути для jars
<path id="libs">
<fileset includes="*.jar" dir="${WEB-INF}/lib" />
<fileset includes="*.jar" dir="${tomcat-home}/bin" />
<fileset includes="*.jar" dir="${tomcat-home}/lib" />
</path>
Ответ 6
Эта ошибка возникает при компиляции Java-программы с использованием классов, поддерживающих API Servlet. Компилятор ищет библиотеку (включенную в файл .jar) с помощью CLASSPATH. Вы можете указать это при компиляции с использованием опций -classpath
или -cp
, как указано в других ответах, но вы должны настроить среду для определения пути к классу по мере необходимости.
Задайте переменную среды CLASSPATH для указания местоположения servlet-api.jar
, которая зависит от вашей установки (ОС, как вы установили и т.д.)
Предполагая, что вы используете Tomcat и установили его одним из 20 возможных способов, API, используемые сервлетами, будут установлены в вашей системе по сравнению с тем местом, где установлен Tomcat. По историческим причинам Tomcat также известен как "Catalina", поэтому вы можете использовать команду "каталина" для запуска определенных команд, и один, он будет сообщать, среди прочего, CATALINA_BASE
. Например, на моем Mac, используя Tomcat, установленную с помощью homebrew, он
Using CATALINA_BASE: /usr/local/Cellar/tomcat/8.5.9/libexec
Местоположение библиотек сервлетов Tomcat находится в этом каталоге lib
.
Установите CATALINA_BASE, затем установите CLASSPATH, используя базу в качестве запуска, например, для Linux или OSX вы можете установить это в .profile
или .bash_profile
следующим образом:
export CATALINA_BASE=/usr/local/Cellar/tomcat/8.5.9/libexec
export CLASSPATH=$CATALINA_BASE/lib/servlet-api.jar:$CLASSPATH
Выйдите из терминала/оболочки и вернитесь, чтобы запустить профиль. Вы должны уметь видеть, что переменная задается с помощью команды echo
, например
echo $CLASSPATH
или в Windows
echo %CLASSPATH%
Если он отображает полный путь к jar `javac WebTest.java ', скомпилируйте ваш класс.
Другие ответы верны - настройте свою IDE (Eclipse, IntelliJ), чтобы узнать о Tomcat или создать с Maven, и вы сэкономите боль.
Ответ 7
Вы должны добавить classpath
для компиляции. В tomcat
classpath="C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar".
Итак, команда
javac -classpath "c:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar" yourfile.java .
Ответ 8
Решение, которое работает, заключается в добавлении следующей зависимости в мой файл pom.xml.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Ответ 9
Получил эту ошибку в Linux из-за странных прав доступа к файлу в дистрибутиве Tomcat. Некоторые файлы и каталоги не доступны для чтения другим пользователям. Я использую отдельные CATALINA_HOME и CATALINA_BASE, поэтому мой tomcat принадлежит пользователю root и управляется пользователем с ограниченными правами.
Исправить это так:
( cd /usr/local/share/tomcat9/ && for file in 'find ./ -type d ! -perm -o=r'; do echo "$file"; chmod o+rx "$file"; done && for file in 'find ./ ! -perm -o=r'; do echo "$file"; chmod o+r "$file"; done )
for file in 'find /usr/local/share/tomcat9/ ! -perm -o=x -name '*.sh''; do echo "$file"; chmod o+x "$file"; done
Ответ 10
Если вы используете elcipse с сервером tomcat, вы можете открыть настройки свойств, щелкнув правой кнопкой мыши проект → выберите Свойства (или Alt + Enter), продолжайте делать то же самое на рисунке ниже. Это решит вашу проблему.
![enter image description here]()
Ответ 11
Все, что вам нужно сделать, это загрузить пакет servlet-api.jar. загрузите пакет и reset reset виртуальную машину