亲测有效解决Tomcat启动提示错误:At least one JAR was scanned for TLDs yet contained no TLDs
作者:TianXinCoord
一、文章前言
本文是亲测有效解决At least one JAR was scanned for TLDs yet contained no TLDs问题,绝对不是为了积分随便粘贴复制然后压根都没有用系列
二、问题描述
1.今天测试发现Tomcat启动贼慢,当然这个不是随机数问题,而是每次卡在At least one JAR was scanned for TLDs yet contained no TLDs这个位置要好半天,而且还是在只有一个项目的情况下!
2.参考别的文章说编辑logging.properties 文件,在文件末尾添加,org.apache.jasper.servlet.TldScanner.level = FINE,启动服务器,然后在控制台看到什么No的输出提示,保存在某一个文件中,然后接下来将文件中提示的jar包再添加到catalina.properties 文件中的tomcat.util.scan.StandardJarScanFilter.jarsToSkip的后面,问题能暂时解决,然后你会发下以下几个问题
- 起作用了,但是当你新加一个jar包不符合规范,烦人的提示又开始了
- 只适用于服务器内项目已经固定了的情况,新建一个不同类项目问题又出现
3.想过直接关闭TLD检查,在conf/context.xml的<Context>中添加processTlds="false"也不起作用
三、问题原因
1.出现这个问题的原因就是Tomcat启动时会扫描大量jar包,如果含有不符合TLD规范的就会出现这个问题
2.以后基本上不会使用JSP作为视图层,所以我们可能根本不需要TLD这个东西,就算不要TLD也没有什么关系
3.注意两个启动:一个是从tomcat的bin目录中启动,另外一个是从Eclipse中或者别的软件中启动,注意看Eclipse启动部分
四、问题解决
4.1 解决步骤
1.可以在Tomcat安装目录下apache-tomcat-9.0.1\conf\catalina.properties文件中看到有以下一串代码,代表的是在启动Tomcat需要跳过检查的jar包
2.那么解决办法就是跳过所以jar包的TLD检查,将所有tomcat.util.scan.StandardJarScanFilter.jarsToSkip=后面的所有通过\连接的这些.jar全部删除(操作之前请备份源文件),直接给tomcat.util.scan.StandardJarScanFilter.jarsToSkip赋值"*.jar","*.jar"代表跳过所有以.jar结尾的文件,示例如下
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
3.删除tomcat的work目录中的所有文件避免缓存干扰;清空所有logs目录中的日志文件,为了方便查看日志文件
4.2 从Tomcat的Bin目录中启动服务器
1.现在到bin目录中找到startup.bat(windows:双击即可运行)或startup.sh(Linux:命令 "./startup.sh" 运行)进行启动,发现启动超快,只需要807毫秒
5.注意:这里只是直接在bin中启动了tomcat服务器,接下来是从Eclipse配置tomcat,通过Eclipse启动服务器
4.3 Eclipse启动Tomcat
1.如果原来就已经配置过该Tomcat的会发现在Eclipse中启动还是老样子,每次卡在TLD那里,感觉根本没有解决,原因如下
Eclipse没有使用配置过的Tomcat,而是使用了自带的TomcatEclipse中原来配置过该Tomcat,因为Tomcat缓存导致没有生效
2.接下在最重要的一步就是删除Eclipse原来配置过的服务器,单击右键选择删除即可
3.创建新的运行环境,改成现在新配置的Tomcat,这样才能让配置生效,配置Tomcat服务器参考文章:https://www.jb51.net/article/183590.htm
4.创建新的服务器之后启动只要482ms
到此这篇关于亲测有效解决Tomcat启动提示错误:At least one JAR was scanned for TLDs yet contained no TLDs的文章就介绍到这了,更多相关tomcat启动提示错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!