项目场景:
根据学习SSM整合时候,写完控制层之后,开启Tomcat服务器进行测试的时候,发现服务器无法正常启动
问题描述
17-Sep-2022 21:53:32.954 严重 [RMI TCP Connection(8)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
17-Sep-2022 21:53:32.954 严重 [RMI TCP Connection(8)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败
根据错误信息显示为“一个或多个listeners启动失败”,注释掉WEB-INF中web.xml文件中关于listener的代码后,果然不报错了,但是这样,无法启动Spring容器,显然是不合理的
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
原因分析:
日志文件过于笼统,分析不到具体的原因。
解决方案:
根据百度查询遇到“org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start.”怎么办 - 正怒月神 - 博客园通过添加文件获取更多日志信息。
获取更详细的错误信息。需要在WEB-INF/classes目录下新建一个logging.properties文件。这个文件的内容为:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ org.apache.juli.FileHandler.level = FINE org.apache.juli.FileHandler.directory = ${catalina.base}/logs org.apache.juli.FileHandler.prefix = error-debug. java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
通过添加了文件后,发现具体信息为:
严重: 异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener]
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/jdbc.properties]
明显为FileNotFoundException错误,并且是配置文件/jdbc.properties出错。经过检查发现是因为下面一行代码中,缺少了classpath:导致,添加上即可运行
<context:property-placeholder location="classpath:jdbc.properties"/>