Пакета 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 виртуальную машину