At least one JAR was scanned for TLDs yet contained no TLDs
EclipseTomcatTomcat7Eclipse Problem Overview
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.
Eclipse Solutions
Solution 1 - Eclipse
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 - Eclipse
(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 - Eclipse
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.
Solution 4 - Eclipse
(tomcat 7.0.32) I had problems to see debug messages althought was enabling TldLocationsCache row in tomcat/conf/logging.properties file. All I could see was a warning but not what libs were scanned. Changed every loglevel tried everything no luck. Then I went rogue debug mode (=remove one by one, clean install etc..) and finally found a reason.
My webapp had a customized tomcat/webapps/mywebapp/WEB-INF/classes/logging.properties file. I copied TldLocationsCache row to this file, finally I could see jars filenames.
To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
Solution 5 - Eclipse
For anyone trying to get this working using the Sysdeo Eclipse Tomcat plugin, try the following steps (I used Sysdeo Tomcat Plugin 3.3.0, Eclipse Kepler, and Tomcat 7.0.53 to construct these steps):
- Window --> Preferences --> Expand the Tomcat node in the tree --> JVM Settings
- Under "Append to JVM Parameters", click the "Add" button.
- In the "New Tomcat JVM parameter" popup, enter
-Djava.util.logging.config.file="{TOMCAT_HOME}\conf\logging.properties"
, where{TOMCAT_HOME}
is the path to your Tomcat directory (example: C:\Tomcat\apache-tomcat-7.0.53\conf\logging.properties). Click OK. - Under "Append to JVM Parameters", click the "Add" button again.
- In the "New Tomcat JVM parameter" popup, enter
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
. Click OK. - Click OK in the Preferences window.
- Make the adjustments to the
{TOMCAT_HOME}\conf\logging.properties
file as specified in the question above. - The next time you start Tomcat in Eclipse, you should see the scanned .jars listed in the Eclipse Console instead of the "Enable debug logging for this logger" message. The information should also be logged in
{TOMCAT_HOME}\logs\catalina.yyyy-mm-dd.log
.
Solution 6 - Eclipse
I had the same issue. this is regarding the tomcat. I have resolved this issue by deleting the tomcat and the added tomcat. And it's working fine now.
Solution 7 - Eclipse
For me I was getting the problem when deploying a geoserver WAR
into tomcat 7
To fix it, I was on Java 7 and upgrading to Java 8.
This is running under a docker container. Tomcat 7.0.75
+ Java 8
+ Geos 2.10.2