记一次Tomcat日志分析:一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件

1 问题

我将一个应用,MicroStrategy-11.3.0000.13515,部署到Tomcat。
在这里插入图片描述
然后,我点击start后报错:

FAIL - Application at context path [/MicroStrategy-11.3.0000.13515] could not be started

2 解决方案

如果你谷歌报错信息的话,你会发现造成这个报错信息的场景有很多。换而言之,这个报错信息不明确。

比如这个问题:FAIL - Application at context path /Hello could not be started
其原因是web.xml的标签没闭合:

Your web.xml ends with <web-app>, but must end with </web-app>

接下来我们要寻找更为明确的报错信息。
在logs/目录下寻找日志文件。

cat catalina.log

日志如下:

15-Sep-2020 21:42:36.518 信息 [http-nio-8080-exec-9] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
15-Sep-2020 21:42:36.520 严重 [http-nio-8080-exec-9] org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
15-Sep-2020 21:42:36.521 严重 [http-nio-8080-exec-9] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[/MicroStrategy-11.3.0000.13515]启动失败

很可惜这个日志还不够详细。
注意下面这句:

一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件

参考这篇博客:one or more listeners failed. Full details will be found in the appropriate container log file

在tomcat的webapps/MicroStrategy-11.3.0000.13515/WEB-INF/classes目录下,添加一个日志配置文件:logging.properties,里面的内容为:

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

再次启动项目,然后查看catalina.log
额外的关键信息信息是:

java.lang.UnsupportedClassVersionError: com/microstrategy/utils/log/SessionListener has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (无法载入的.[com.microstrategy.utils.log.SessionListener])

你如果对JVM/jdk熟悉的话,你就知道jdk版本和class file版本是一一对应的。

JDK 1.11 = 55
JDK 1.8 = 52
JDK 1.7 = 51
JDK 1.6 =50

com/microstrategy/utils/log/SessionListener是由更新jdk11编译的,对应class file版本55,但是当前jdk只能编译最高版本52的class file。

所以问题的根源在于当前jdk的版本过低。
升级当前机器的jdk至11后重启tomcat。
MicroStrategy-11.3.0000.13515已经自动被部署到tomcat。
在这里插入图片描述

3 讨论

日志是王道。
熟悉tomcat的一些原理、术语。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值