Как импортировать API javax.servlet в проект Eclipse?

Я хочу разработать с помощью Servlets в Eclipse, но в нем говорится, что пакет javax.servlet не может быть разрешен. Как добавить пакет javax.servlet в проект Eclipse?

Ответ 1

Убедитесь, что у вас есть правильный Eclipse и сервер

Убедитесь, что вы используете Eclipse IDE для разработчиков Java EE (с помощью EE). Он содержит средства разработки для создания динамических веб-проектов и легко интегрирует servletcontainers (эти инструменты являются частью Web Tools Platform, WTP). Если у вас уже есть Eclipse IDE для Java (без EE) и вручную установлены некоторые связанные с EE плагины, то, скорее всего, это было сделано неправильно. Вам лучше всего мусор и захватить реальную среду Eclipse для Java EE.

Вам также необходимо убедиться, что на вашем компьютере уже установлен сервлетконтейнер, который реализует по крайней мере ту же версию API сервлета, что и сервлетконтейнер в рабочей среде, например Apache Tomcat, Oracle GlassFish, JBoss AS/WildFly и т.д. Обычно достаточно просто загрузить ZIP файл и извлечь его. В случае Tomcat не загружайте формат EXE, это только для производственных сред Windows. См. Также a.o. Несколько портов (8005, 8080, 8009), требуемых Tomcat Server на локальном хосте, уже используются.

Сервлетконтейнер представляет собой конкретную реализацию API сервлета. Обратите внимание, что Java EE SDK, загружаемый на Oracle.com, в основном содержит GlassFish. Так что если вы уже загрузили Java EE SDK, то у вас в основном уже есть GlassFish. Также обратите внимание, что, например, GlassFish и JBoss AS/WildFly - это больше, чем просто сервлетконтейнер, они также поддерживают JSF, EJB, JPA и все другие возможности Java EE. См. Также a.o. Что такое Java EE?


Интегрируйте сервер в Eclipse и свяжите его с Project

После установки как Eclipse для Java EE, так и servletcontainer на вашем компьютере выполните следующие шаги в Eclipse:

  • Интегрировать servletcontainer в Eclipse

    а. Просмотр через сервер

    • Откройте представление "Серверы" в нижнем поле.
    • Щелкните правой кнопкой мыши и выберите "Создать" > "Сервер".
    • Выберите подходящую make-версию и версию браузера сервлета и пройдите через мастер.

      enter image description here

    б. Или, используя настройки Eclipse

    • Открыть окно > Настройки > Сервеp > Среда выполнения.
    • Здесь вы можете добавлять, редактировать и удалять серверы.

      enter image description here

  • Связать сервер с проектом

    а. В новом проекте

    • Откройте Project Navigator/Explorer с левой стороны.
    • Щелкните правой кнопкой мыши и выберите "Создать" > "Проект", а затем в меню "Веб" > "Динамический веб-проект".
    • В мастере установите целевую рабочую среду на интегрированный сервер.

      enter image description here

    б. Или в существующем проекте

    • Проект Rightclick и выберите "Свойства".
    • В разделе Целевые сроки выполнения выберите интегрированный сервер.

      enter image description here

    В любом случае Eclipse автоматически загрузит библиотеки servletcontainer в путь сборки. Таким образом вы сможете импортировать и использовать API сервлета.


Никогда не переносите свободные JAR файлы, специфичные для сервера

В любом случае вам не нужно возиться в свойстве Build Path проекта. Вы должны прежде всего никогда вручную копировать/загружать/перемещать/включать отдельные библиотеки, специфичные для сервлетконтейнеров, такие как servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar, javaee.jar и т.д. Это приведет только к будущей переносимости, совместимости, путям классов и проблемам ремонтопригодности, поскольку ваш webapp не будет работать, когда он будет развернут в servletcontainer другой версии/версии, чем из тех, где эти библиотеки первоначально получены.

Если вы используете Maven, вам необходимо убедиться, что библиотеки, специфичные для сервлетов, которые уже предоставлены целевой средой выполнения, отмечены как <scope>provided</scope>.

Вот некоторые типичные исключения, которые вы можете получить, когда вы помещаете /WEB-INF/lib или даже /JRE/lib, /JRE/lib/ext и т.д. с помощью библиотек, специфичных для сервлетов, в неосторожной попытке исправить ошибки компиляции:

Ответ 2

import javax.servlet

ШАГ 1

Перейдите в свойства вашего проекта (с помощью Alt + Enter или righ-click)

ШАГ 2

проверить Apache Tomcat v7.0 в Целевое время выполнения, и он работает.

Ответ 3

Небольшое отличие от Хари:

Щелкните правой кнопкой мыши по проекту --- > Свойства --- > Путь сборки Java --- > Добавить библиотеку... --- > Время выполнения сервера --- > Apache Tomcat ---- > Готово.

Ответ 4

Quick Fix - это сработало в Eclipse - щелкните правой кнопкой мыши по проекту → Свойства → путь сборки Java (вкладка) → Добавить внешние JAR → найдите реализацию api jar сервлета (если Tomcat - его имя servlet-api.jar ) → нажмите OK. Что это!

Ответ 5

Включить servlet-api.jar из папки вашего сервера lib. enter image description here

Сделайте этот шаг

enter image description here

Ответ 6

Я знаю, что это старый пост. Тем не менее, я наблюдал еще один пример, когда в проекте уже добавлен Tomcat, но мы все еще получаем эту ошибку. Это разрешило это:
Alt + Enter
Границы проекта
Справа, рядом с деталями, находится еще одна вкладка "Runtimes". Там будет указан установленный сервер tomcat. Выберите его.
Сохраните конфигурацию и DONE!

Надеюсь, это поможет кому-то.

Ответ 7

вы можете просто скопировать servlet-api.jar и скопировать файлы jar в папку lib, которая находится в WEB-INF. то просто очистите и постройте свой проект, ваши ошибки будут решены.

  **OR**

вы можете напрямую добавлять файлы jar в библиотеку, используя следующие шаги.

  • Щелкните правой кнопкой мыши по проекту.
  • Перейти к свойствам.
  • Перейдите к пути сборки Java.
  • Выберите вкладку "Добавить библиотеку" на вкладках.
  • Добавить файлы Jar
  • укажите путь к вашему файлу servlet-api.jar.
  • Очистите и создайте свой проект.

Ответ 8

Добавьте зависимость javax.servlet в pom.xml. Ваша проблема будет решена.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

Ответ 9

От wikipedia.

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
                "Transitional//EN\">\n" +
                "<html>\n" +
                "<head><title>Hello WWW</title></head>\n" +
                "<body>\n" +
                "<h1>Hello WWW</h1>\n" +
                "</body></html>");
  }
}

Это, конечно, работает, только если вы добавили путь сборки servlet-api.jar к Eclipse. Обычно ваш сервер приложений (например, Tomcat) будет иметь правильный файл jar.

Ответ 10

Я получал исключение нулевого указателя во время создания проекта, связанного с "Динамическим веб-модулем".

Чтобы получить проект для компиляции (т.е. в javax.servlet для импорта успешно), мне пришлось перейти к проекту "Свойства", выбрать "Границы проекта" на боковой панели, отметить Динамический веб-модуль и нажать "Применить".

Удивительно, что на этот раз фасет "Динамический веб-модуль" установлен правильно, и импорт начал работать.

Ответ 11

Вы, прежде всего, никогда не будете вручную копировать/загружать/перемещать/включать отдельные библиотеки, специфичные для сервлета, такие как servlet-api.jar

@BalusC,

Я бы предпочел использовать точные классы, которые мое приложение будет использовать, а не одно, предоставленное Eclipse (когда я чувствую себя параноидным разработчиком).

Другим решением было бы использовать Eclipse "Настроить путь сборки" > "Библиотеки" > "Добавить внешние банки" и добавить сервлет api любого контейнера, который вы хотите использовать.

И следуйте решению @kaustav datta при использовании ant для сборки - используйте свойство tomcat.home или weblogic.home. Однако он вводит другое ограничение, которое разработчик должен установить Weblogic на своем локальном компьютере, если используется weblogic! Любое другое решение для очистки?

Ответ 12

В моем случае, когда я перешел на экран Targetted Runtimes, Tomcat 7 не был указан (отключен), несмотря на то, что был установлен.

Чтобы исправить, мне пришлось перейти в Настройки- > Сервер- > Среда выполнения, затем удалить и переустановить Tomcat 7.

Ответ 13

Многие из нас развиваются в Eclipse через проект Maven. Если так, вы можете включить зависимости Tomcat в Maven с помощью баннеров tomcat-servlet-api и tomcat-jsp-api. Один существует для каждой версии Tomcat. Обычно добавлять их с областью provided к вашему POM является достаточным. Это сохранит вашу сборку более переносимой.

Если вы обновите Tomcat в будущем, вы просто обновите версию этих банок.