At least one JAR was scanned for TLDs yet contained no TLDs
I keep getting this on tomcat 7.30 (eclipse juno)
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.
Well I went at conf\logging.properties
and turned all INFO
to FINE
and uncommented the line
# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
And I still see At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging...
So what should I do to see those jars ?
Logs location :
The tomcat logs are in $CATALINA_HOME\logs\catalina.yyyy-mm-dd.log. Eclipse prints them in the console - if you want to have your console logged you must
In the servers tab, double-click on the Tomcat Server. You will get a screen called Overview. Click on "Open launch configuration". Click on the "Common" tab. Towards the bottom of the screen you can check the "File" checkbox and then specify a file that can be used to log your console (catalina.out) output. Finally, restart the Tomcat server.
Solution 1:
If one wants to have the conf\logging.properties
read one must (see also here) dump this file into the Servers\Tomcat v7.0 Server at localhost-config\
folder and then add the lines :
-Djava.util.logging.config.file="${workspace_loc}\Servers\Tomcat v7.0 Server at localhost-config\logging.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
to the VM arguments of the launch configuration one is using.
This may have taken a restart or two (or not) but finally I saw in the console in bright red :
FINE: No TLD files were found in [file:/C:/Dropbox/eclipse_workspaces/javaEE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/ted2012/WEB-INF/lib/logback-classic-1.0.7.jar]. Consider adding the JAR to the tomcat.util.scan.DefaultJarScanner.jarsToSkip or org.apache.catalina.startup.TldConfig.jarsToSkip property in CATALINA_BASE/conf/catalina.properties file. //etc
I still don't know when exactly this EDIT: from the comment by @Stephan: "The FINE warning appears each time any change is done in the JSP file".FINE
warning appears - does not appear immediately on tomcat launch
Bonus: To make the warning go away add in catalina.properties
:
# Additional JARs (over and above the default JARs listed above) to skip when
# scanning for TLDs. The list must be a comma separated list of JAR file names.
org.apache.catalina.startup.TldConfig.jarsToSkip=logback-classic-1.0.7.jar,\
joda-time-2.1.jar,joda-time-2.1-javadoc.jar,mysql-connector-java-5.1.24-bin.jar,\
logback-core-1.0.7.jar,javax.servlet.jsp.jstl-api-1.2.1.jar
Solution 2:
(tomcat 8.0.28) Above method did not work for me. This is what worked:
-
Add this line to the end of your {CATALINA-HOME}/conf/logging.properties:
org.apache.jasper.level = FINEST
Shut down the server (if started).
-
Open console and run (in case of Windows):
%CATALINA_HOME%\bin\catalina.bat run
-
Enjoy logs, e.g. (again, for Windows):
{CATALINA-HOME}/logs/catalina.2015-12-28.log
I gave up on integrating this with Eclipse launch configuration so be aware that this works only from console, launching the server from Eclipse won't produce additional log messages.
Solution 3:
apache-tomcat-8.0.33
If you want to enable debug logging in tomcat for TLD scanned jars then you have to change /conf/logging.properties file in tomcat directory.
uncomment the line :
org.apache.jasper.servlet.TldScanner.level = FINE
FINE level is for debug log.
This should work for normal tomcat.
If the tomcat is running under eclipse. Then you have to set the path of tomcat logging.properties in eclipse.
- Open servers view in eclipse.Stop the server.Double click your tomcat server.
This will open Overview window for the server. - Click on Open launch configuration.This will open another window.
- Go to the Arguments tab(second tab).Go to VM arguments section.
- paste this two line there :-
-Djava.util.logging.config.file="{CATALINA_HOME}\conf\logging.properties"
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Here CATALINA_HOME is your PC's corresponding tomcat server directory. - Save the Changes.Restart the server.
Now the jar files that scanned for TLDs should show in the log.