Я хочу разработать с помощью Servlets в Eclipse, но в нем говорится, что пакет javax.servlet
не может быть разрешен. Как добавить пакет javax.servlet
в проект 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 для Java EE, так и servletcontainer на вашем компьютере выполните следующие шаги в Eclipse:
Интегрировать servletcontainer в Eclipse
а. Просмотр через сервер
Выберите подходящую make-версию и версию браузера сервлета и пройдите через мастер.
б. Или, используя настройки Eclipse
Связать сервер с проектом
а. В новом проекте
В мастере установите целевую рабочую среду на интегрированный сервер.
б. Или в существующем проекте
В разделе Целевые сроки выполнения выберите интегрированный сервер.
В любом случае Eclipse автоматически загрузит библиотеки servletcontainer в путь сборки. Таким образом вы сможете импортировать и использовать API сервлета.
В любом случае вам не нужно возиться в свойстве 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
и т.д. с помощью библиотек, специфичных для сервлетов, в неосторожной попытке исправить ошибки компиляции:
<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"/>
т. д.
maven-archetype-webapp
не включающего JAR-файл servlet-api в качестве зависимости? В проекте есть index.jsp с ошибкой компиляции. (Eclipse Luna Build id: 20140612-0600, JDK 8, M2eclipse)
Перейдите в свойства вашего проекта (с помощью Alt + Enter или righ-click)
проверить Apache Tomcat v7.0 в Целевое время выполнения, и он работает.
Небольшое отличие от Хари:
Щелкните правой кнопкой мыши по проекту --- > Свойства --- > Путь сборки Java --- > Добавить библиотеку... --- > Время выполнения сервера --- > Apache Tomcat ---- > Готово.
Включить servlet-api.jar из папки вашего сервера lib.
Сделайте этот шаг
Quick Fix - это сработало в Eclipse - щелкните правой кнопкой мыши по проекту → Свойства → путь сборки Java (вкладка) → Добавить внешние JAR → найдите реализацию api jar сервлета (если Tomcat - его имя servlet-api.jar ) → нажмите OK. Что это!
servlet-api.jar
такие как servlet-api.jar
, jsp-api.jar
, el-api.ja
r, j2ee.jar
, javaee.jar
и т. Д. Это приведет только к будущим проблемам переносимости, совместимости, пути к классам и ремонтопригодности.
Я знаю, что это старый пост. Тем не менее, я наблюдал еще один пример, когда в проекте уже добавлен Tomcat, но мы все еще получаем эту ошибку. Это разрешило это:
Alt + Enter
Границы проекта
Справа, рядом с деталями, находится еще одна вкладка "Runtimes".
Там будет указан установленный сервер tomcat. Выберите его.
Сохраните конфигурацию и DONE!
Надеюсь, это поможет кому-то.
Добавьте зависимость 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
и скопировать файлы jar в папку lib, которая находится в WEB-INF.
то просто очистите и постройте свой проект, ваши ошибки будут решены.
**OR**
вы можете напрямую добавлять файлы jar в библиотеку, используя следующие шаги.
servlet-api.jar
.servlet-api.jar
, jsp-api.jar
, javaee.jar
и т. Д. привести к будущим проблемам переносимости, совместимости, пути к классам и ремонтопригодности.
От 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.
Я получал исключение нулевого указателя во время создания проекта, связанного с "Динамическим веб-модулем".
Чтобы получить проект для компиляции (т.е. в javax.servlet
для импорта успешно), мне пришлось перейти к проекту "Свойства", выбрать "Границы проекта" на боковой панели, отметить Динамический веб-модуль и нажать "Применить".
Удивительно, что на этот раз фасет "Динамический веб-модуль" установлен правильно, и импорт начал работать.
Многие из нас развиваются в Eclipse через проект Maven. Если так,
вы можете включить зависимости Tomcat в Maven с помощью баннеров tomcat-servlet-api
и tomcat-jsp-api
. Один существует для каждой версии Tomcat. Обычно добавлять их с областью provided
к вашему POM является достаточным. Это сохранит вашу сборку более переносимой.
Если вы обновите Tomcat в будущем, вы просто обновите версию этих банок.
В моем случае, когда я перешел на экран Targetted Runtimes, Tomcat 7 не был указан (отключен), несмотря на то, что был установлен.
Чтобы исправить, мне пришлось перейти в Настройки- > Сервер- > Среда выполнения, затем удалить и переустановить Tomcat 7.
Вы, прежде всего, никогда не будете вручную копировать/загружать/перемещать/включать отдельные библиотеки, специфичные для сервлета, такие как servlet-api.jar
@BalusC,
Я бы предпочел использовать точные классы, которые мое приложение будет использовать, а не одно, предоставленное Eclipse (когда я чувствую себя параноидным разработчиком).
Другим решением было бы использовать Eclipse "Настроить путь сборки" > "Библиотеки" > "Добавить внешние банки" и добавить сервлет api любого контейнера, который вы хотите использовать.
И следуйте решению @kaustav datta при использовании ant для сборки - используйте свойство tomcat.home или weblogic.home. Однако он вводит другое ограничение, которое разработчик должен установить Weblogic на своем локальном компьютере, если используется weblogic! Любое другое решение для очистки?