找不到 ContextLoaderListener

ContextLoaderListener not found

我开始学习 Spring 框架,几乎从一开始就遇到了一个问题:当我在 IntellijIDEA 中开发时,我发现配置 spring mvc 项目并不容易. 部署到 Glassfish 后,项目不断报错

java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener. Please see server.log for more details. 

此外,在查看 Glassfish 日志时,我只看到:

org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/springframework/core/io/Resource

以及一堆类似的抛出异常。

这是我在 web.xml

中进行的上下文参数配置
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/spring/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

这可以做什么? 这是 github 项目:https://github.com/vaano94/Project

这应该与编译时的依赖项解析无关,因为您可以编译项目并且项目描述符中的配置看起来非常好。

但是,当您收到一组 ClassNotFoundException 时,这意味着应用程序服务器无法在运行时找到一些 类,那些基本上与 Spring,所以你必须检查你的项目工件依赖关系。

Intellij IDEA 中:

  • 打开项目配置视图:文件 -> 项目结构
  • 导航到您的项目 Web 工件:项目设置 -> 工件 然后单击您的项目 exploded war神器.
  • 输出布局选项卡中,导航到库文件夹,即/WEB-INF/lib/ 并检查是否包含所有 Spring 所需的工件。万一缺少任何一个,corewebmvc 依赖项应该是这种情况我猜。