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

267

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

  • 0
    я пытаюсь запустить простой привет сервлет типа слова, обычно, если я хочу сделать графический интерфейс, я бы импортировал Java ...... Swing. *; я не могу найти правильный импорт для сервлета
Теги:
servlets

13 ответов

376
Лучший ответ

Убедитесь, что у вас есть правильный 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-версию и версию браузера сервлета и пройдите через мастер.

      Изображение 6737

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

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

      Изображение 6738

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

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

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

      Изображение 6739

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

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

      Изображение 6740

    В любом случае 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 и т.д. с помощью библиотек, специфичных для сервлетов, в неосторожной попытке исправить ошибки компиляции:

  • 4
    @BalusC Если я использую Apache Ant для создания своего проекта, как мне динамически включить папку /lib(servlet-api.jar & jsp-api.jar) контейнера сервлета? Или мне нужно жестко <property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/> путь к папке / lib, например - <property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/> т. д.
  • 1
    @BalusC, почему проекты maven создаются с использованием архетипа maven-archetype-webapp не включающего JAR-файл servlet-api в качестве зависимости? В проекте есть index.jsp с ошибкой компиляции. (Eclipse Luna Build id: 20140612-0600, JDK 8, M2eclipse)
Показать ещё 5 комментариев
201

Изображение 6741

ШАГ 1

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

ШАГ 2

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

  • 2
    Помог мне добавить мою среду выполнения JBOSS. Мой список был пуст.
  • 2
    Это было решением для меня. Я установил tomcat 6.0 в качестве среды развертывания (в качестве сервера в затмении), но не учел указывать его в качестве среды выполнения ... Я предполагаю, что это означает, что он может найти .jars в моей папке tomcat / lib во время выполнения, но не во время компиляции.
Показать ещё 4 комментария
66

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

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

  • 2
    Привет ivanLam, Apache Tomcat не отображается после выполнения сервера? Что делать сейчас!
10

Включить servlet-api.jar из папки вашего сервера lib. Изображение 6742

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

Изображение 6743

  • 1
    Решение не работает для меня, все еще получая ошибку ниже Ошибка дочернего контейнера во время запуска java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Не удалось запустить компонент [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ мессенджер]]
  • 1
    Пожалуйста, помогите мне решить эту проблему
10

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

  • 14
    Ссылаясь на вышеупомянутое сообщение BalusC, никогда не копируйте / загружайте / перемещайте / не включайте вручную отдельные библиотеки для servlet-api.jar такие как servlet-api.jar , jsp-api.jar , el-api.ja r, j2ee.jar , javaee.jar и т. Д. Это приведет только к будущим проблемам переносимости, совместимости, пути к классам и ремонтопригодности.
4

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

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

3

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

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
  • 0
    Да, работает отлично !!
3

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

  **OR**

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

  • Щелкните правой кнопкой мыши по проекту.
  • Перейти к свойствам.
  • Перейдите к пути сборки Java.
  • Выберите вкладку "Добавить библиотеку" на вкладках.
  • Добавить файлы Jar
  • укажите путь к вашему файлу servlet-api.jar.
  • Очистите и создайте свой проект.
  • 0
    Понижение, со ссылкой на вышеупомянутый пост BalusC и комментарий Аникет Кулькарни, никогда не копировать / загружать / перемещать / включать вручную отдельные библиотеки, специфичные для servletcontainer, такие как servlet-api.jar , jsp-api.jar , javaee.jar и т. Д. привести к будущим проблемам переносимости, совместимости, пути к классам и ремонтопригодности.
2

От 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.

1

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

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

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

0

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

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

0

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

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

0

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

@BalusC,

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню