目錄
一、文章前言
本文是親測有效解決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目錄中的日誌文件,爲了方便查看日誌文件
---------------------