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

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

16 ответов

Решение

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

Убедитесь, что вы используете хотя бы Eclipse IDE для разработчиков Java EE (вместе с EE). Он содержит инструменты разработки для создания динамических веб-проектов и простой интеграции контейнеров сервлетов (эти инструменты являются частью 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 на локальном хосте, уже используются.

Контейнер сервлетов - это конкретная реализация 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 и контейнер сервлетов будут установлены на вашем компьютере, выполните следующие действия в Eclipse:

  1. Интегрировать сервлетконтейнер в Eclipse

    а. Через серверы

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

    б. Или через настройки Eclipse

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

  2. Ассоциировать сервер с проектом

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

    • Откройте Project Navigator / Explorer на левой стороне.
    • Щелкните правой кнопкой мыши там и выберите New > Project, а затем в меню Web> Dynamic Web Project.
    • В мастере установите Target Runtime для встроенного сервера.

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

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

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


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

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

В случае, если вы используете Maven, вы должны быть абсолютно уверены, что библиотеки, зависящие от servletcontainer, которые уже предоставлены целевой средой выполнения, помечены как <scope>provided</scope>,

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

импорт javax.servlet

ШАГ 1

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

ШАГ 2

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

Немного отличия от Хари:

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

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

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

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

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

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

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

<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

Ссылка

Для gradle проектов:

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

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

Я знаю, что это старый пост. Тем не менее, я наблюдал еще один случай, когда в проект уже добавлен Tomcat, но мы все еще получаем эту ошибку. Сделал это, чтобы решить, что:
Alt + Enter
Проект Грани
Справа, рядом с деталями, находится еще одна вкладка "Время выполнения". Установленный сервер Tomcat будет указан там. Выберите это.
Сохраните конфигурацию и СДЕЛАНО!

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

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

  **OR**

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

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

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

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

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

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

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

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

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 затмить путь сборки. Обычно ваш сервер приложений (например, Tomcat) будет иметь правильный файл JAR.

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

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

Это может быть также причиной. я придумал следовать pom.xml,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Нерешенная проблема возникла из-за исключения spring-boot-starter-tomcat, Просто удали <exclusions>...</exclusions> зависимость это решит проблему, но убедитесь, что выполнение этого также исключит встроенный сервер Tomcat.

Если вам нужен встроенный сервер Tomcat, вы можете добавить ту же зависимость с compile scope,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>compile</scope>
</dependency>

Предположим, это простой динамический веб-проект. Убедитесь, что Tomcat присутствует в пути сборки проекта.

Сначала загрузите/установите локальный экземпляр tomcat на свой компьютер. Предположим, мы установили tomcat v8.5.

Теперь настройте среду выполнения Eclipse Global Server.

      Windows > Preferences > Server > Runtime Environments > Add > Apache > Apache Tomcat v8.5 > Next > Browse Tomcat Installation directory > Next > Finish.

Теперь создайте свой динамический веб-проект, и мы увидим, что проблема с импортом javax.servlet не может быть решена. Решите это, следуя ниже.

      Right Click On Project > Build Path > Configure Build Path > Libraries > Add Library > Server Runtime > Select your Apache Tomcat instance > Finish > Apply and Close.

Все ошибки исчезнут.

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

@BalusC,

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

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

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

Другие вопросы по тегам