【问题标题】:java.lang.NoClassDefFoundError: org/springframework/web/context/ContextCleanupListener issuejava.lang.NoClassDefFoundError: org/springframework/web/context/ContextCleanupListener 问题
【发布时间】:2015-02-04 02:01:23
【问题描述】:

我收到此错误

SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/web/context/ContextCleanupListener
        at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:80)
        at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5035)
        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5687)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
        at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1028)
        at org.apache.catalina.startup.HostConfig.undeploy(HostConfig.java:1498)
        at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1425)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1646)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:328)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1546)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1556)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1524)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.springframework.web.context.ContextCleanupListener
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        ... 16 more

但是,我查看了已部署的文件夹,并看到了包含该文件的 jar,我做错了什么?

https://github.com/davidahines/spacechip/tree/spring_security

问题是当我尝试访问 localhost:8080/spacechip 时,我得到“资源不可用”。

这是我的配置。

【问题讨论】:

    标签: spring hibernate jsp authentication struts


    【解决方案1】:

    尝试在你的 pom 中将 spring-web 的依赖更改为 3.0.5.RELEASE,你目前在类路径上有 2 个版本

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

    【讨论】:

      【解决方案2】:

      jar 可能在您部署的文件夹中,但 jar(或您的带有通配符的部署文件夹)是否在 CLASSPATH 中?

      【讨论】:

      • 我不知道,如何检查?你的意思是环境变量还是什么?我在窗户里。
      • 该问题的答案取决于您运行程序的方式。从命令行,您可以将其添加到 CLASSPATH 环境变量(设置 CLASSPATH= ... 等),或使用 java.exe 的 -cp 命令行开关您也可以将其添加到我的电脑-> 属性中的 CLASSPATH。如果它在服务器(如 Web 服务器或类似服务器)下运行,那么您必须参考其文档,因为上述任何一项都不适用。例如,对于 Lotus Domino,jar 必须位于 \Notes\JVM\Lib\Ext 中(因为没有明确的类路径。)
      • 底线是 java 不会在任何地方(甚至当前子目录)隐式查找 Jar 文件。它只检查 CLASSPATH 设置的任何位置(但是)。
      • 我是通过tomcat运行的,还是通过命令行添加吗?
      【解决方案3】:

      EnvironmentAware 位于 spring-context-3.1.1.RELEASE.jar 中,因此您缺少那个。

      还要重新检查您的 Maven POM 文件,这样您就不会丢失任何其他 Spring 库,例如 spring-web、spring-webmvc(如果找到了 DispatcherServlet 类,您可能会拥有这些)、spring-orm(如果您使用类似 ORM) Hibernate、spring-jms 如果你使用 JMS 等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-06
        • 1970-01-01
        • 2017-02-19
        • 2014-04-15
        • 2021-05-28
        • 1970-01-01
        • 2015-10-14
        • 2017-06-03
        相关资源
        最近更新 更多