Развернул файл “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
Используемые инструменты:
- JDK1.7
- Мавен 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
Рекомендации
Оригинал: “https://mkyong.com/java/servlet-api-2-5-jar-jar-not-loaded/”