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

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

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

Убедитесь, что вы используете, по крайней мере, Eclipse IDE для разработчиков Java EEEE ). Он содержит средства разработки для создания динамических веб-проектов и легко интегрирует 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. См. Также ao Несколько портов (8005, 8080, 8009), требуемых Tomcat Server на localhost, уже используются .

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


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

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

  1. Интегрируйте servletcontainer в Eclipse

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

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

      введите описание изображения здесь

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

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

      введите описание изображения здесь

  2. Связанный сервер с проектом

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

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

      введите описание изображения здесь

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

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

      введите описание изображения здесь

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


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

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

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

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

  • java.lang.NullPointerException в org.apache.jsp.index_jsp._jspInit
  • java.lang.NoClassDefFoundError: javax / el / ELResolver
  • java.lang.NoSuchFieldError: IS_DIR
  • java.lang.NoSuchMethodError: javax.servlet.jsp.PageContext.getELContext () Ljavax / el / ELContext;
  • java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext (Ljavax / servlet / ServletContext;) Ljavax / servlet / jsp / JspApplicationContext;
  • org.apache.jasper.JasperException: метод getJspApplicationContext (ServletContext) не определен для типа JspFactory
  • java.lang.VerifyError: (class: org / apache / jasper / runtime / JspApplicationContextImpl, метод: createELResolver signature: () Ljavax / el / ELResolver;) Несовместимый аргумент функции
  • jar не загружен. См. Раздел Servlet Spec 2.3, раздел 9.7.2. Класс нарушения: javax / servlet / Servlet.class

импортировать javax.servlet

ШАГ 1

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

ШАГ 2

проверьте Apache Tomcat v7.0 под Targeted Runtime, и он работает.

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

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

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

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

введите описание изображения здесь

Quick Fix- Это сработало в Eclipse – щелкните правой кнопкой мыши по проекту -> Свойства -> Путь сборки Java (вкладка) -> Добавить внешние JAR -> найти реализацию api jar сервлета (если Tomcat – его имя servlet-api.jar) -> нажмите «ОК». Это оно !!

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

  javax.servlet javax.servlet-api 3.0.1 provided  при  javax.servlet javax.servlet-api 3.0.1 provided  ,  javax.servlet javax.servlet-api 3.0.1 provided  

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

  **OR** 

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

  1. Щелкните правой кнопкой мыши по проекту.
  2. Перейти к свойствам.
  3. Перейдите в Java Build Path.
  4. Выберите вкладку «Добавить библиотеку».
  5. Добавить файлы Jar
  6. укажите путь к вашему файлу servlet-api.jar .
  7. Очистите и создайте свой проект.

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

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

Из Википедии .

 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("\n" + "\n" + "Hello WWW\n" + "\n" + "

Hello WWW

\n" + ""); } }

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

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

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

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

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

Чтобы исправить это, я должен был перейти в Preferences-> Server-> Runtime Environments, а затем удалить и переустановить Tomcat 7.

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

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

Для проектов maven добавьте следующую зависимость:

   javax.servlet javax.servlet-api 3.0.1 provided  при   javax.servlet javax.servlet-api 3.0.1 provided  ,   javax.servlet javax.servlet-api 3.0.1 provided  

Справка

Для проектов с gradleиентом:

 dependencies { providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' } 

или загрузите javax.servlet.jar и добавьте в свой проект.

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

@BalusC,

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

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

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

  • Spring: как я могу вставить HttpServletRequest в компонент с запросом?
  • Модуль тестирования сервлетов Java
  • Сервлет перенаправляет на ту же страницу сообщение об ошибке
  • Разница между / и / * в шаблоне url для отображения сервлета
  • Как передавать аудио / видео файлы, такие как MP3, MP4, AVI и т. Д. С помощью сервлета
  • Как настроить Tomcat для подключения к MySQL
  • Как я могу получить компонент Spring в фильтре сервлетов?
  • Предотrotation множественного входа с использованием одного и того же имени пользователя и пароля
  • java.lang.IllegalArgumentException: указанный основной набор ресурсов недействителен
  • Как добавить заголовки ответов на основе типа контента; получение Content-type до того, как ответ будет выполнен
  • Как указать страницу ошибки по умолчанию в web.xml?
  • Interesting Posts

    Как показать детали текущей строки из p: dataTable в диалоговом окне ap: и обновить после сохранения

    C ++: безопасно ли указывать указатель на int и позже на указатель?

    Вращение андроида видео

    Является ли наиболее значительная десятичная цифра точностью, которая может быть преобразована в двоичную и обратно в десятичную без потери значимости 6 или 7.225?

    Разница между объектом и экземпляром

    правильная аннотация для спящего режима для байта

    О форме-агностическом разрезе ndarrays

    Какова функция FormulaR1C1?

    Что означает явное ключевое слово?

    Значение по умолчанию для Android «debuggable»

    Как заставить Chrome использовать поисковую систему google.com без https

    Ограничение ли Java на длину имени classа?

    Каков самый простой способ зашифровать пароль, когда я сохраняю его в реестре?

    Отображение сервлета Джерси / * вызывает ошибку 404 для статических ресурсов

    AppCompat 23.3 Поддержка векторов больше не работает?

    Давайте будем гением компьютера.