servlet-api-2.5.jar - банка не загружена

servlet-api-2.5.jar – jar not loaded

Развернул файл «войны» на Tomcat и отображает следующие сообщения об ошибках:

Jul 17, 2014 7:59:55 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(D:\apache-tomcat-7.0.53\webapps\hc\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded.
See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class

Используемые инструменты:

  1. JDK1.7

  2. Maven 3

  3. Tomcat 7

1. причина

Контейнер Tomcat поставляется с собственной версиейservlet-api.jar, а файл «war» снова развертывает тот же самый jar, вызывая класс Offending: javax / servlet / Servlet.class.

Это действительно распространенная проблема для разработчиков, которые используют Maven в качестве инструмента для сборки. Обычно мы включаемservlet-api в качестве зависимости проекта следующим образом:

pom.xml

    
        javax.servlet
        servlet-api
        2.5
    

При создании файла войны Maven также будет включатьservlet-api.

2. Решение

Чтобы исправить это, установите область действия наprovided. Это говорит Maven использовать кодservlet-api.jar только для компиляции и тестирования, но НЕ включать его в файл WAR. Развернутый контейнер «предоставит»servlet-api.jar во время выполнения.

pom.xml

    
        javax.servlet
        servlet-api
        2.5
        provided