如何解决JSP编译器的警告:一个JAR被扫描了TLD,但没有包含TLD?
当通过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编译时间?
如何启用更好的输出?
对于Tomcat 8 ,我必须将以下代码行添加到tomcat/conf/logging.properties
,以查看Tomcat扫描到的日志以显示在日志中:
org.apache.jasper.servlet.TldScanner.level = FINE
上述解决scheme不适合我。 相反,我只是从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=
Tomcat 8.5 。 里面的catalina.properties,位于/ conf目录下:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar
或者进入位于Tomcat的/ conf目录中的context.xml,并添加:
<JarScanner scanClassPath="false"/>
如果可以帮助任何人,我只是将下面的输出文件的内容附加到现有的org.apache.catalina.startup.TldConfig.jarsToSkip=
条目。
请注意,/ /var/log/tomcat7/catalina.out
log / /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
希望有所帮助。
对于Tomcat 8,我不得不将以下行添加到catalina.properties以防止Tomcat扫描的jar:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar
取消注释此行(在/conf/logging.properties
)
org.apache.jasper.compiler.TldLocationsCache.level = FINE
在tomcat 7.0.53中为我工作!
上面没有任何工作对我来说(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中
之后,我得到了许多“冒犯”的文件,我没有打扰他们(也恢复正常的日志logging…)
错误消息指出它正在使用哪个logging器,因此设置logging器.level
:
[jasper] Jul 31, 2012 7:15:15 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
所以logging器是org.apache.jasper.compiler.TldLocationsCache
。 在你的logging.properties
文件中,添加这一行:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
由于Tomcat扫描TLD的所有Jars(标记库定义),警告就出现了。
第1步 :要查看哪些JAR抛出此警告,请将以下行插入到tomcat / conf / logging.properties
org.apache.jasper.servlet.TldScanner.level = FINE
现在,您应该能够看到有关哪些JAR导致初始警告的详细警告
Step2由于在扫描过程中跳过不需要的JAR可以提高启动时间和JSP编译时间,因此我们将在catalina.properties
文件中跳过不需要的catalina.properties
。 你有两个select –
- 列出
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
下的所有JAR。 但是如果你有很多jar子,或者jar子不断变化,这可能会变得很麻烦。 - 或者,插入
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
跳过所有的jar子
你现在不应该看到上面的警告,如果你有一个相当大的应用程序,它应该为你节省大量的时间来部署一个应用程序。
注意:testing在Tomcat8