java.lang.NoClassDefFoundError: javax / servlet / Filter
Это конкретное исключение может возникнуть, когда у вас есть копия servlet.jar
, которая возникла из древнего контейнера Servlet 2.2 или более ранней версии, и этот файл имеет приоритет при загрузке классов над собственными библиотеками Tomcat. Класс Filter
был введен в сервлете 2.3.
* * 1010
Я уже поместил файл servlet.jar в папку classpath и папку tomcat_home / commons / lib
Вы не должны этого делать. Удалите все библиотеки, зависящие от servletcontainer, из папок /WEB-INF/lib
, "classpath" и Tomcat /common/lib
.
Контейнер сервлетов Tomcat уже поставляется с нужными API в своей папке /lib
. Вы не должны иметь никаких копий в /WEB-INF/lib
вашего веб-приложения, ни в каком-либо другом месте в пути к классам, а также копии из совершенно другого сервлет-контейнера.
Эта распространенная ошибка начинающих при попытке загрузить / скопировать случайные библиотеки, специфичные для сервлетконтейнеров, обычно вызвана невозможностью компилировать классы сервлетов с помощью javac или в среде IDE. При использовании javac вам нужно ссылаться на Tomcat /lib
в аргументе -cp
. При использовании IDE вам нужно указывать Tomcat как Targeted runtime в свойствах проекта.
Смотри также: