【问题标题】:java.lang.NoClassDefFoundError: javax/servlet/Filterjava.lang.NoClassDefFoundError: javax/servlet/Filter
【发布时间】:2012-02-09 23:52:59
【问题描述】:

当我启动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 文件夹中

请任何人提出建议。

【问题讨论】:

    标签: tomcat servlets


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      此 jar 位于 %TOMCAT_HOME%/lib

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

      【讨论】:

        【解决方案3】:

        java.lang.NoClassDefFoundError: javax/servlet/Filter

        当您拥有源自古老的 Servlet 2.2 容器或更早版本的 servlet.jar 的副本并且该文件在类加载中优先于 Tomcat 自己的库时,可能会发生此特殊异常。 Filter 类在 Servlet 2.3 中即为 introduced


        我已经把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 引用为 Targeted runtime

        另见:

        【讨论】:

        • 在删除 servlet.jar 的副本并启动 tomcat 后,我​​收到错误 SEVERE: Exception starting filter springSecurityFilterChain java.lang.ClassNotFoundException: org.springframework.web.filter.DelegatingFilterProxy
        • 这是一个不同的问题。你最初的问题已经解决了。您现在离成功部署又近了一步。此异常仅表示运行时类路径中缺少给定的类(或更具体地说,包含给定类的 JAR)。您需要将其放入/WEB-INF/lib。如果您卡住了,请提出一个新问题,这与当前问题完全无关。
        • 由于您是新来的,请不要忘记在回答(最)有助于解决具体问题时将其标记为已接受。另见meta.stackexchange.com/questions/5234/…
        【解决方案4】:

        因为你have a servlet.jar somewhere that you shouldn't。根据常见问题解答,确保您拥有的唯一 servlet.jar 位于 commons/lib 中。

        【讨论】:

        • 在删除 servlet.jar 的副本并启动 tomcat 后,我​​收到错误 SEVERE: Exception starting filter springSecurityFilterChain java.lang.ClassNotFoundException: org.springframework.web.filter.DelegatingFilterProxy
        猜你喜欢
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 2021-10-20
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        相关资源
        最近更新 更多