How to fix JSP compiler warning: one JAR was scanned for TLDs yet contained no TLDs?
Solution 1:
Tomcat 8.5. Inside catalina.properties, located in the /conf directory set:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar
Or go into context.xml, located in Tomcat's /conf directory and add:
<JarScanner scanClassPath="false"/>
Solution 2:
For Tomcat 8, I had to add the following line to tomcat/conf/logging.properties
for the jars scanned by Tomcat to show up in the logs:
org.apache.jasper.servlet.TldScanner.level = FINE
Solution 3:
The above solution did not work for me. Instead I simply removed the hash(#) from the last line of the logging.properties file, to make it work.
# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
The next step is to add the jars that Tomcat 7 is looking for in catalina.properties files just after the following line
org.apache.catalina.startup.TldConfig.jarsToSkip=
Solution 4:
If it helps anyone, I just appended the contents of the below output file to the existing org.apache.catalina.startup.TldConfig.jarsToSkip=
entry.
Note that /var/log/tomcat7/catalina.out
is the location of your tomcat log.
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
Hope that helps.
Solution 5:
The warning comes up because Tomcat scans all Jars for TLDs (Tagging Library Definitions).
Step1: To see which JARs are throwing up this warning, insert he following line to tomcat/conf/logging.properties
org.apache.jasper.servlet.TldScanner.level = FINE
Now you should be able to see warnings with a detail of which JARs are causing the intial warning
Step2 Since skipping unneeded JARs during scanning can improve startup time and JSP compilation time, we will skip un-needed JARS in the catalina.properties
file. You have two options here -
- List all the JARs under the
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
. But this can get cumbersome if you have a lot jars or if the jars keep changing. -
Alternatively, Insert
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
to skip all the jars
You should now not see the above warnings and if you have a considerably large application, it should save you significant time in deploying an application.
Note: Tested in Tomcat8