maven + eclipse + servlet-api.jar - PullRequest
       0

maven + eclipse + servlet-api.jar

10 голосов
/ 11 июля 2010

Я использую Eclipse вместе с плагином m2eclipse для создания и управления моим проектом.В POM я включил запись для servlet-api:

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

Предоставляется область действия, не включающая файл .jar в пакет .war (он уже предоставляется контейнером сервлета tomcat).Компиляция mvn install является правильной , файл не включен в WEB-INF \ lib , развертывание в tomcat работает, программа работаетработает, все в порядке.

Но дело начинается в «Затмении».После запуска моего веб-приложения из Eclipse я получаю сообщение об ошибке:

\ WEB-INF \ lib \ servlet-api-2.5.jar) - jar не загружен.См. Servlet Spec 2.3, раздел 9.7.2.Класс оскорблений: javax / servlet / Servlet.class

Не знаю почему, потому что Зависимости Maven (включая javac-servlet-2.5.jar) включены как Зависимости модуля Java EE , и должно быть помещено в папку WEB-INF \ lib, начиная с затмения.С другой стороны, в eclipse я указал путь к моему каталогу Apache Tomcat, а внутри проекта есть автоматические ссылки на библиотеки из Apache Tomcat v6.0 , включая servlet-api.jar .

Таким образом, после удаления ссылки из POM на servlet-api-2.5.jar эта библиотека исчезает из Зависимости Maven , и я не получаю исключений при запуске моего веб-приложения из затмения.Все хорошо ... в затмении .

Конечно, без входа в POM, на этот раз mvn install failes с тем же исключением, которое я предоставил ранее.

Есть ли способ заставить его работать без удаленияи чем вставить ссылку, в зависимости от того, что я хочу сделать: скомпилировать с Maven или запустить с Eclipse?

С уважением

Ответы [ 2 ]

5 голосов
/ 11 июля 2010

Это

\ WEB-INF \ lib \ servlet-api-2.5.jar) - jar не загружен.См. Servlet Spec 2.3, раздел 9.7.2.Класс-нарушитель: javax / servlet / Servlet.class

- это просто предупреждение от сервера приложений о том, что он игнорирует один из включенных в него JAR-файлов и не будет загружать его.Его можно смело игнорировать.

Похоже, проблема в части / плагине для Eclipse, который загружает ваш проект на встроенный сервер приложений - похоже, он просто использует список зависимостей для того, что связывать в виде библиотекипуть, и не имеет понятия областей Maven.

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

(Также я всегда обнаруживал, что запуск веб-приложений как «веб-проектов» в Eclipseэто боль в заднице, приводящая ко всяким странностям - не стоит хлопот - если вы хотите быстро загрузить свой проект веб-приложения Maven в контейнер сервлета, просто используйте mvn jetty:run или mvn tomcat:run. Борьба с IDE может быть пустой тратой времени).

0 голосов
/ 24 июля 2013

Установите плагин с именем " Maven Integration для WTP ", он может полностью решить эту проблему.

URL хранилища: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

...