Я хочу разрабатывать с сервлетами в Eclipse, но он говорит, что пакет javax.servlet
не может быть решен. Как я могу добавить javax.servlet
пакет в свой проект Eclipse?
Я хочу разрабатывать с сервлетами в Eclipse, но он говорит, что пакет javax.servlet
не может быть решен. Как я могу добавить javax.servlet
пакет в свой проект Eclipse?
Ответы:
Убедитесь, что вы используете хотя бы Eclipse IDE для разработчиков Enterprise Java (вместе с Enterprise ). Он содержит инструменты разработки для создания динамических веб-проектов и простой интеграции контейнеров сервлетов (эти инструменты являются частью Web Tools Platform, WTP). Если у вас уже была Eclipse IDE для Java (без Enterprise) и вы вручную установили некоторые связанные плагины, то есть вероятность, что это было сделано неправильно. Лучше всего отказаться от него и взять настоящую Eclipse IDE для Enterprise Java.
Вам также необходимо убедиться, что на вашем компьютере уже установлен контейнер сервлетов, который реализует по крайней мере ту же версию 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 для Enterprise Java и сервлет-контейнер на свою машину, выполните в Eclipse следующие шаги:
Интегрировать сервлетконтейнер в Eclipse
а. Через серверы
Откройте представление « Серверы» в нижней части окна.
Щелкните правой кнопкой мыши там и выберите New> Server .
Выберите подходящую марку и версию сервлет-контейнера и пройдите мастер.
б. Или через настройки Eclipse
Ассоциировать сервер с проектом
а. В новом проекте
Откройте Project Navigator / Explorer на левой стороне.
Щелкните правой кнопкой мыши там и выберите New> Project, а затем в меню Web> Dynamic Web Project .
В мастере установите Target Runtime для встроенного сервера.
б. Или в существующем проекте
Щелкните правой кнопкой мыши проект и выберите « Свойства» .
В разделе « Целевые среды выполнения » выберите интегрированный сервер.
В любом случае, Eclipse автоматически примет библиотеки контейнеров сервлетов в пути сборки. Таким образом, вы сможете импортировать и использовать Servlet API.
В любом случае вам не нужно возиться в свойстве Build Path проекта. Вы должны прежде всего никогда не вручную копировать / загрузить / перемещать / включать отдельные servletcontainer-специфичные библиотеки 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 для небрежной попытки исправить ошибки компиляции:
<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)
servlet-api
зависимости предоставляются средами выполнения Servlet, такими как Tomcat, Wildfly, Glassfish и т. д.,. Никогда не включайте его как часть вашего приложения, так как есть большая вероятность того, что оно вступит в конфликт с окружающей средой.
Перейти к свойствам вашего проекта (с Alt+ Enterили правой кнопкой мыши)
проверьте Apache Tomcat v7.0 под Targeted Runtime, и он работает.
The import javax.servlet cannot be resolved
.
Немного отличия от Хари:
Щелкните правой кнопкой мыши по проекту ---> Свойства ---> Путь сборки 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>
Быстрое исправление - Это работало в Eclipse - Правый клик по проекту -> Свойства -> Путь сборки Java (вкладка) -> Добавить внешние JAR -> найти реализацию api jar сервлета (если Tomcat - его имя servlet-api.jar) -> нажмите ОК Это оно !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
г, j2ee.jar
, javaee.jar
и т.д. Это привело бы только к будущей мобильности, совместимости и ремонтопригодности классам проблемам.
Вы можете просто скопировать servlet-api.jar
и скопировать эти файлы jar в папку lib, которая находится в WEB-INF. тогда просто почистите и постройте свой проект, ваши ошибки будут решены.
**OR**
Вы можете напрямую добавить файлы JAR в библиотеку, используя следующие шаги.
servlet-api.jar
файлу.servlet-api.jar
, jsp-api.jar
, javaee.jar
и т.д. Это приведет лишь к будущей переносимости, совместимости, и путь к классам ремонтопригодности неприятностей.
Я знаю, что это старый пост. Тем не менее, я наблюдал еще один случай, когда в проект уже добавлен Tomcat, но мы все еще получаем эту ошибку. Сделал это, чтобы решить, что:
Alt + Enter
Facets Project
Справа, рядом с деталями, находится еще одна вкладка «Runtime». Установленный сервер 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("<!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.
Для проектов 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
и добавьте в свой проект.
Я получаю исключение нулевого указателя при создании проекта, связанного с «Динамическим веб-модулем».
Чтобы получить проект для компиляции (то есть, чтобы javax.servlet
успешно импортировать), мне нужно было перейти в « Свойства проекта» , выбрать « Фасеты проекта» на боковой панели, отметить « Динамический веб-модуль» и нажать « Применить» .
Удивительно, но на этот раз фасет «Динамический веб-модуль» был установлен правильно, и импорт начал работать.
Многие из нас развиваются в Eclipse через проект Maven. Если это так, вы можете включить зависимости Tomcat в Maven через jar tomcat-servlet-api
и tomcat-jsp-api
. Один существует для каждой версии Tomcat. Обычно достаточно добавить их в область видимости provided
вашего POM. Это сделает вашу сборку более переносимой.
Если вы обновите Tomcat в будущем, вы также просто обновите версию этих jar-файлов.
Прежде всего, вы никогда не должны вручную копировать / загружать / перемещать / включать отдельные библиотеки для servletcontainer, такие как servlet-api.jar
@BalusC,
Я бы предпочел использовать именно те классы, которые будет использовать мое приложение, а не класс, предоставленный Eclipse (когда я чувствую себя параноидальным разработчиком).
Другое решение состоит в том, чтобы использовать Eclipse «Configure Build Path»> Libraries> Add External Jars и добавить api сервлетов для любого контейнера, который вы выберете.
И следуйте решению @kaustav datta при использовании ant для сборки - имейте свойство как tomcat.home или weblogic.home. Однако это вводит другое ограничение, что разработчик должен установить Weblogic на свой локальный компьютер, если он используется! Любое другое чистое решение?
Это может быть также причиной. Я придумал следующее 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>