Рубрики
Без рубрики

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

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

Развернул файл “war” на 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. Мавен 3
  3. Кот 7

1. Причина

Контейнер Tomcat поставляется с собственной версией servlet-api.jar , и файл “war” снова развертывает ту же банку и вызывает класс-нарушитель: javax/servlet/Servlet.class .

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

	
		javax.servlet
		servlet-api
		2.5
	

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

2. Решение

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

	
		javax.servlet
		servlet-api
		2.5
		provided
	

Рекомендации

  1. Maven: Введение в механизм зависимости

Оригинал: “https://mkyong.com/java/servlet-api-2-5-jar-jar-not-loaded/”