java.lang.NoClassDefFoundError: javax / servlet / Filter - PullRequest
4 голосов
/ 13 января 2012

Я получаю эту ошибку при запуске tomcat

java.lang.NoClassDefFoundError: javax/servlet/Filter
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at      org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1301)
at    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:207)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:78)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3666)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4258)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

Я уже поместил файл servlet.jar в папку classpath и папку tomcat_home / commons / lib

пожалуйста, кто-нибудь может подсказать, что делать.

Ответы [ 4 ]

9 голосов
/ 13 января 2012

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 в свойствах проекта.

Смотри также:

1 голос
/ 31 марта 2015

Не удалось найти версию jar сервлета jar, которая вызывала проблему, я явно добавил правильную версию jar в путь к классам Tomcat:

enter image description here

Эта банка находится в %TOMCAT_HOME%/lib

Примечание: убедитесь, что файл servlet-api jar отображается первым.

0 голосов
/ 21 мая 2013

добавьте это в ваш pom.xml, замените версию любой последней стабильной версией.поищите spring-web в mvnrepository.com и получите последнюю версию

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.0.RELEASE</version>
</dependency>
0 голосов
/ 13 января 2012

Это потому, что у вас есть файл servlet.jar, который вы не должны . Убедитесь, что единственный файл servlet.jar находится в файле commons / lib согласно FAQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...