maven + eclipse + сервлет-api.jar

Я использую 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. После запуска моего веб-приложения из eclipse я получаю сообщение об ошибке:

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

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

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

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

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

С Уважением


person jwaliszko    schedule 11.07.2010    source источник


Ответы (2)


Этот

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

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

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

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

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

person matt b    schedule 11.07.2010

Установите плагин под названием «Интеграция Maven для WTP», он может полностью решить эту проблему.

URL-адрес репозитория: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp/

person Tim Wong    schedule 24.07.2013