Tomcat NoClassDefFoundError:javax/servlet/Filter

Tomcat NoClassDefFoundError:javax/servlet/Filter,tomcat,servlets,Tomcat,Servlets,我在启动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

我在启动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)
java.lang.NoClassDefFoundError:javax/servlet/Filter
位于java.lang.ClassLoader.findBootstrapClass(本机方法)
位于java.lang.ClassLoader.findBootstrapClass0(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1301)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:207)
位于org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:302)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:78)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3666)
位于org.apache.catalina.core.StandardContext.start(StandardContext.java:4258)
位于org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
位于org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
位于org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
位于org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
位于org.apache.catalina.core.StandardService.start(StandardService.java:448)
位于org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
位于org.apache.catalina.startup.catalina.start(catalina.java:552)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
位于org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
我已经将servlet.jar放在classpath和tomcat_home/commons/lib文件夹中

任何人都可以提出建议。

这是因为你。根据常见问题解答,确保您仅有的servlet.jar位于commons/lib中

NoClassDefFoundError:javax/servlet/Filter

当您有一个源于古老的Servlet2.2容器或更早版本的
servlet.jar
的副本,并且该文件在类加载中优先于Tomcat自己的库时,就会发生这种特殊的异常。
过滤器
类就是在Servlet2.3中


我已经将servlet.jar放在classpath和tomcat_home/commons/lib文件夹中

你不应该那样做
/WEB-INF/lib
文件夹、“类路径”和Tomcat的
/common/lib
文件夹中删除所有特定于servletcontainer的库

Tomcat servletcontainer在其自己的
/lib
文件夹中已经附带了正确的API。您不应该在webapp的
/WEB-INF/lib
中,也不应该在类路径的其他地方有任何副本,也不应该是来自完全不同的servletcontainer的副本

初学者在尝试下载/复制特定于servletcontainer的随机库时犯的这个常见错误通常是由于无法通过javac或IDE编译servlet类造成的。使用javac时,需要在
-cp
参数中引用Tomcat的
/lib
。使用IDE时,需要在项目属性中将Tomcat作为目标运行时引用

另见:

将此添加到pom.xml中,用任何最新的稳定版本替换该版本。在mvnrepository.com中搜索SpringWeb并获取最新版本

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.0.RELEASE</version>
</dependency>

org.springframework
弹簧网
4.2.0.1发布

无法找到导致问题的servlet jar的jar版本,我显式地将jar的正确版本添加到Tomcat类路径:

此jar位于
%TOMCAT\u HOME%/lib


注意:确保servlet api jar首先出现。

删除servlet.jar副本后,启动tomcat iam获取错误严重:异常启动筛选器springSecurityFilterChain java.lang.ClassNotFoundException:org.springframework.web.filter.DelegatingFilterProxy删除servlet.jar副本后,启动tomcat iam获取错误严重:异常启动筛选器springSecurityFilterChain java.lang.ClassNotFoundException:org.springframework.web.filter.DelegatingFilterProxy这是另一个问题。你最初的问题解决了。您现在离成功部署又近了一步。这个异常仅仅意味着给定的类(或者更具体地说,包含给定类的JAR)在运行时类路径中丢失。您需要将其放入
/WEB-INF/lib
。问一个新问题如果你结巴了,这与当前的问题完全无关。因为你是新来的,请不要忘记在对解决具体问题有帮助(最多)的时候,在答案上做标记。另见