项目场景:
小白第一次正儿八经整合SSM框架。做了一个SSM框架整合的DEMO程序,但在运行的时候出现了":一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件"这个问题。弄了很久才解决完毕。这其中有不少的坑要踩,我就集中在文中一块说了。

使用编译器:IDEA


解决过程:
首先,只根据这一条报错信息就能准确定位到问题所在是不现实的,但Tomcat并没有给我们提供更详细的日志,这怎么办呢?
通过谷歌,找到一些文章,需要在

tomcat的安装目录/webapps/这里是你的项目的名字/WEB-INF/classes

该路径下创建一个logging.properties文件,其内容为:

org.apache.catalina.core.ContainerBase.[Catalina].level=INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers=java.util.logging.ConsoleHandler

level也可以设置为ALL,查看更高级别的日志。

但我们去该目录下找,发现tomcat/webapps下居然没有我们的项目,经过搜查,发现如果我们是以下图这种形式创建tomcat运行的话,那么我们的项目文件保存位置会不一样。
在这里插入图片描述
我们该如何去找?
项目结构–>构件–>输出目录
在这里插入图片描述
这里才是存放的地方。我们可以将其改到tomcat/webapps下,当然也可以直接找到这个位置然后添加properties.


至此,再运行一次,已经可以打出日志。我们定位到错误行,第一行是:
org.apache.catalina.core.StandardContext.listenerStart 异常将上下文初始化事件发送到类的侦听器实例.[com.chen.myssm.listene
如果搜索该行错误信息,是会得到各种五花八门结果的。我们把重点放在第二行(或者是第一个带明显错误信息的行)。

我的错误信息是:java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/Stri...

搜索一下,很快发现是依赖中添加了两个slf4j的原因,多个日志之间起了冲突,去掉了其中一个。然后程序得以正常运行。


希望这片文章对你有帮助。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐