org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,使用监听器导致tomcat启动失败,解决方法

2年前 (2022) 程序员胖胖胖虎阿
720 0 0

org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/demo4_war]启动失败

网上有各种各样的解决方法大部分原因是因为Spring-web包没有导入成功导致(前提是pom.xml中已经导入Spring-web坐标)
解决方法为ctrl+alt+shift+s打开项目结构
org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,使用监听器导致tomcat启动失败,解决方法
打开项目中含有WEB-INF,lib文件夹下如图所示,并且右侧没有包需要导入,则包的导入没有问题,上图为正确显示

但是还有一种在写代码时出现的错误也会导致tomcat启动失败,即监听器的配置出现问题
使用监听器时,配置文件配置的文件路径前要加classpath:无论是web.xml还是applicationContext.xml配置文件,如下图

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    
   <context:property-placeholder location="classpath:jdbc.properties">

我就是英文配置Jdbc.properties没有加clapath导致tomcat启动失败,

ContextLoaderListener监听器的正确使用步骤
第一步,pom.xml配饰Spring-web坐标

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

坐标导入时注意,导入与Spring版本一致的坐标
第二步web.xml配置监听器

    <!--配置全局变量-->
   <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:applicationContext.xml</param-value>
   </context-param>
   <!--配置监听器-->
   <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

第三步,使用WebApplicationContextUtils获取应用上下文对象

        ServletContext servletContext = this.getServletContext();//获取servletContext对象,作为参数获取ApplicationContext对象
        ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
        UserService userService = app.getBean(UserService.class);

相关文章

暂无评论

暂无评论...