Ошибка компиляции: пакет javax.servlet не существует - PullRequest
60 голосов
/ 08 февраля 2012

У меня есть пакет, в который я импортирую javax.servlet. * И javax.servlet.http. * Когда я пытаюсь скомпилировать его в командной строке, я получаю сообщение об ошибке

package javax.servletне существует

Я использую JDK 1.7.0 и Tomcat 6.0.

Ответы [ 11 ]

71 голосов
/ 08 февраля 2012

Вам необходимо добавить путь к файлу Tomcat /lib/servlet-api.jar в classpath времени компиляции.

javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java

В classpath Java нужно искать импортированные зависимости. В противном случае по умолчанию будет использоваться текущая папка, которая включена в . в приведенном выше примере. ; является разделителем пути для Windows; если вы используете ОС на основе Unix, тогда вам нужно использовать :.

24 голосов
/ 09 ноября 2015

Если вы работаете с проектом maven, добавьте следующую зависимость в ваш pom.xml

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
9 голосов
/ 08 февраля 2012

Это JSP или сервлет?

Ну, эти два пакета на самом деле не встроены в Java, как java.io. Вместо этого они поставляются с веб-сервером с поддержкой сервлетов (например, Tomcat). Поэтому, прежде чем компилятор Java сможет скомпилировать наш сервлет, мы должны сообщить ему, где найти классы в этих двух пакетах.

Требуемые классы обычно хранятся в файле с именем servlet.jar. Точное местоположение этого файла будет зависеть от используемого вами программного обеспечения веб-сервера, но в случае Tomcat его можно найти в подкаталоге lib основного установочного каталога Tomcat (например, d: \ Program Files \ Apache Group \ jakarta- кот-3.2.3 \ Lib \ servlet.jar). Чтобы компилятор Java мог компилировать сервлеты, вам нужно добавить этот файл в путь к классам Java. По умолчанию Java ищет классы только в текущем каталоге ("."). Таким образом, "." путь к классу по умолчанию Если вы измените путь к классу, чтобы включить файл servlet.jar (".; D: ... \ lib \ servlet.jar" под Windows, ".: / Usr /.../ lib / servlet.jar" в Unix ), тогда сервлет должен нормально скомпилироваться.

Вы можете указать путь к классу для использования при запуске javac.exe следующим образом:

d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar" MyServlet.java

Или в Linux javac использует: вместо;

server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java

6 голосов
/ 27 мая 2013

В среде linux мягкая ссылка, по-видимому, не работает.Вы должны использовать физический путь.например, на моей машине у меня есть мягкая ссылка на /usr/share/tomacat7/lib/servlet-api.jar, и использование ее в качестве аргумента classpath привело к неудачной компиляции с той же ошибкой.вместо этого мне пришлось использовать /usr/share/java/tomcat-servlet-api-3.0.jar - файл, на который указала программная ссылка.

5 голосов
/ 05 августа 2016

Вот что для меня решило проблему:

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
3 голосов
/ 15 апреля 2018

Скопируйте файл " servlet-api.jar " из местоположения YOUR_INSTILLATION_PATH \ tomcat \ lib \ servlet-api.jar и вставьте файл в каталог Java YOUR_INSTILLATION_PATH \ Java \ jdk1.8.0_121 \ JRE \ Lib \ вн

это будет работать (проверено).

2 голосов
/ 03 апреля 2013

JSP и Servlet - программирование на стороне сервера.Поскольку он поставляется в виде встроенного пакета внутри сервера, такого как Tomcat.Путь может быть как мудрый

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

Просто вы хотите сделать, это добавить это следующим образом

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;
2 голосов
/ 08 февраля 2012

Добавьте servlet-api.jar в ваш путь к классам. Он будет доступен в папке lib Tomcat.

0 голосов
/ 07 апреля 2019

Возможное решение (протестировано на ubuntu )

  1. Открыть тип терминала geany .bashrc
  2. Перейти к началу и вставить это
    export CLASSPATH=$CLASSPATH:/web/apache-tomcat-8.5.39/lib/servlet-api.jar
  3. Теперь сохраните и закройте
  4. Попробуйте запустить программу.
0 голосов
/ 19 марта 2019

Даже после попытки предложить решение, это не решило мою проблему, потому что там, где я ввел много экземпляров пути Java.

  1. Я удалил все пути, связанные с Java (разные версии Java) из «Path, JAVA_HOME, JRE_HOME» и создал из свежих.

  2. Я установил (путь может меняться в зависимости от установки)
    а. JAVA_HOME как C: \ Program Files \ Java \ jdk1.8.0_191
    б. JRE_HOME как C: \ Program Files \ Java \ jdk1.8.0_191 \ jre \ lib
    с. добавьте двоичный путь к файлу в путь: C: \ Program Files \ Java \ jdk1.8.0_191 \ bin
    д. CLASSPATH как C: \ apache-tomcat-7.0.93 \ lib

  3. никогда не пытайтесь в той же командной строке, если она уже открыта, при выполнении изменений / создания системных / пользовательских переменных. закройте его и откройте новый.

Базовое изображение: enter image description here

...