java.lang.NoClassDefFoundError: javax/servlet/Filter

发布于 2024-12-26 15:29:55 字数 2039 浏览 0 评论 0原文

当我启动 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 放入类路径和 tomcat_home/commons/lib 文件夹中,

请任何人建议该怎么做。

I am getting this error when i start 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)

i have already put the servlet.jar in classpath and tomcat_home/commons/lib folder

please can any one suggest what to do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

痞味浪人 2025-01-02 15:29:55

java.lang.NoClassDefFoundError:javax/servlet/Filter

当您拥有源自古老 Servlet 2.2 容器或更早版本的 servlet.jar 的副本并且该文件在以下位置获得优先级时,可能会发生此特殊异常:通过 Tomcat 自己的库进行类加载。 Filter 类是引入的 在 Servlet 2.3 中。


我已经将 servlet.jar 放入类路径和 tomcat_home/commons/lib 文件夹中

您不应该这样做。从 /WEB-INF/lib、“classpath”和 Tomcat 的 /common/lib 文件夹中删除所有 servletcontainer 特定的库。

Tomcat servlet 容器已经在其自己的/lib 文件夹中附带了正确的 API。您的 web 应用程序的 /WEB-INF/lib 中不应该有任何副本,类路径中的其他位置也不应该有任何副本,也不应该来自完全不同的 servlet 容器的副本。

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

另请参阅:

java.lang.NoClassDefFoundError: javax/servlet/Filter

This particular exception can occur when you have got a copy of the servlet.jar which originated from an ancient Servlet 2.2 container or older and that file got precedence in classloading over Tomcat's own libraries. The Filter class was namely introduced in Servlet 2.3.


i have already put the servlet.jar in classpath and tomcat_home/commons/lib folder

You should not do that. Remove all servletcontainer-specific libraries from your /WEB-INF/lib, the "classpath" and the Tomcat's /common/lib folders.

The Tomcat servletcontainer already ships with the right APIs in its own /lib folder. You should not have any copy in your webapp's /WEB-INF/lib, nor elsewhere in the classpath, also not the ones from a completely different servletcontainer.

This common beginner's mistake of attempting to download/copy random servletcontainer specific libraries is commonly caused by the inability to compile servlet classes by javac or in the IDE. When using javac, you need to reference Tomcat's /lib in the -cp argument. When using an IDE, you need to reference Tomcat as Targeted runtime in project's properties.

See also:

潦草背影 2025-01-02 15:29:55

将其添加到您的 pom.xml 中,并将该版本替换为任何最新的稳定版本。在 mvnrepository.com 中搜索 spring-web 并获取最新版本

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

add this to your pom.xml, replace the version with any latest stable version. search for spring-web in mvnrepository.com and get the latest version

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.0.RELEASE</version>
</dependency>
舂唻埖巳落 2025-01-02 15:29:55

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

输入图像描述这里

该 jar 位于 %TOMCAT_HOME%/lib

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

Unable to find the jar version of servlet jar that was causing issue, I explicitly added correct version of jar to Tomcat classpath :

enter image description here

This jar resides in %TOMCAT_HOME%/lib

Note : ensure servlet-api jar appears first.

太阳男子 2025-01-02 15:29:55

这是因为您在某处不应该有 servlet.jar。根据常见问题解答,确保您拥有的唯一 servlet.jar 位于 commons/lib 中。

It's because you have a servlet.jar somewhere that you shouldn't. Make sure the only servlet.jar you have is in commons/lib, per the FAQ.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文