当启动应用程序或通过ant编译JSP时,Tomcat 7 Jasper会抱怨多余或错放的JAR文件。我收到了以下信息
**compile-jsp:**
[jasper] Jul 31, 2012 7:15:15 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
[jasper] INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
如何在扫描期间跳过不需要的JAR可以改善tomcat中的启动时间和JSP编译时间?
如何实现更好的输出?
答案 0 :(得分:40)
对于 Tomcat 8 ,我必须将以下行添加到tomcat/conf/logging.properties
,以便Tomcat扫描的jar显示在日志中:
org.apache.jasper.servlet.TldScanner.level = FINE
答案 1 :(得分:39)
Tomcat 8.5 。 catalina.properties内部,位于/ conf目录集中:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar
或者进入位于Tomcat&conf目录中的context.xml并添加:
<JarScanner scanClassPath="false"/>
答案 2 :(得分:15)
上述解决方案对我不起作用。 相反,我只是从logging.properties文件的最后一行删除了哈希(#),以使其工作。
# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
下一步是在catalina.properties文件中添加Tomcat 7正在寻找的jar,紧跟在以下行之后
org.apache.catalina.startup.TldConfig.jarsToSkip=
答案 3 :(得分:10)
如果它对任何人有帮助,我只是将以下输出文件的内容附加到现有的org.apache.catalina.startup.TldConfig.jarsToSkip=
条目中。
请注意,/var/log/tomcat7/catalina.out
是您的tomcat日志的位置。
egrep "No TLD files were found in \[file:[^\]+\]" /var/log/tomcat7/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > skips.txt
希望有所帮助。
答案 4 :(得分:5)
警告出现是因为Tomcat扫描所有Jars的TLD(标记库定义)。
Step1 :要查看哪些JAR抛出此警告,请将以下行插入tomcat / conf / logging.properties
org.apache.jasper.servlet.TldScanner.level = FINE
现在您应该能够看到警告,其中详细说明了哪些JAR导致初始警告
Step2 由于在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间,我们将跳过catalina.properties
文件中不需要的JARS。你有两个选择 -
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
下的所有JAR。但如果你有很多罐子或罐子不断变化,这会变得很麻烦。tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
以跳过所有广告您现在应该看不到上述警告,如果您有相当大的应用程序,它应该为您节省大量部署应用程序的时间。
注意:在Tomcat8中测试
答案 5 :(得分:4)
取消注释此行(在/conf/logging.properties
)
org.apache.jasper.compiler.TldLocationsCache.level = FINE
在 tomcat 7.0.53 中为我工作!
答案 6 :(得分:4)
对于Tomcat 8,我必须将以下行添加到catalina.properties以防止Tomcat扫描的jar:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar
答案 7 :(得分:3)
以上都不适用于我(tomcat 7.0.62)...正如Sensei_Shoh注释看到消息上方的类并将其添加到logging.properties。我的日志是:
Jan 18, 2016 8:44:21 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
所以我添加了
org.apache.catalina.startup.TldConfig.level = FINE
在conf / logging.properties中
之后我得到了这么多&#34;冒犯&#34;我没有费心去跳过它们的文件(也恢复正常记录...)
答案 8 :(得分:1)
错误消息说明它正在使用哪个记录器,因此请设置记录器.level
:
[jasper] Jul 31, 2012 7:15:15 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
因此记录器为org.apache.jasper.compiler.TldLocationsCache
。在logging.properties
文件中,添加以下行:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
答案 9 :(得分:0)
如果日志中的额外条目打扰了您,但启动时间的额外时间没有,请将其添加到logging.properties
并忘记它:
org.apache.jasper.servlet.TldScanner.level = WARNING