logging - tldscanner - Cómo reparar la advertencia del compilador JSP: ¿se escaneó un JAR para TLD pero aún no contenía TLD?
at least one jar was scanned for tlds yet contained no tlds. (10)
Al iniciar la aplicación o compilar JSP a través de ant, Tomcat 7 Jasper se queja de archivos JAR superfluos o extraviados. Recibí el mensaje debajo
**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.
¿Cómo saltarse los JAR innecesarios durante el escaneo puede mejorar el tiempo de inicio y el tiempo de compilación de JSP en tomcat?
cómo habilitar una mejor salida?
Aparece la advertencia porque Tomcat escanea todas las jarras para TLD (etiquetado de definiciones de biblioteca).
Paso 1 : para ver qué JAR están arrojando esta advertencia, inserte la siguiente línea en tomcat / conf / logging.properties
org.apache.jasper.servlet.TldScanner.level = FINE
Ahora debería poder ver las advertencias con un detalle de qué JAR están causando la alerta inicial
Paso 2 Dado que omitir los JAR innecesarios durante el escaneo puede mejorar el tiempo de inicio y el tiempo de compilación de JSP, omitiremos JARS innecesarios en el archivo catalina.properties
. Tienes dos opciones aquí -
- Enumere todos los JAR bajo
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
. Pero esto puede ser engorroso si tienes muchos frascos o si los frascos siguen cambiando. - Alternativamente, inserte
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
para omitir todos lostomcat.util.scan.StandardJarScanFilter.jarsToSkip=*
Ahora no debería ver las advertencias anteriores y si tiene una aplicación considerablemente grande, debería ahorrarle un tiempo considerable en la implementación de una aplicación.
Nota: Probado en Tomcat8
Descomente esta línea (en /conf/logging.properties
)
org.apache.jasper.compiler.TldLocationsCache.level = FINE
¡El trabajo es para mí en Tomcat 7.0.53 !
El mensaje de error indica qué registrador está usando, así que configure ese registrador .level
:
[jasper] Jul 31, 2012 7:15:15 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
Entonces el registrador es org.apache.jasper.compiler.TldLocationsCache
. En su archivo logging.properties
, agregue esta línea:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
La solución anterior no funcionó para mí. En su lugar, simplemente eliminé el hash (#) de la última línea del archivo logging.properties para que funcione.
# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE
El siguiente paso es agregar los archivos jar que busca Tomcat 7 en archivos catalina.properties justo después de la siguiente línea
org.apache.catalina.startup.TldConfig.jarsToSkip=
Ninguno de los anteriores funcionó para mí (tomcat 7.0.62) ... Como notas Sensei_Shoh, vea la clase sobre el mensaje y agréguela a logging.properties. Mis registros fueron:
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.
así que agregué
org.apache.catalina.startup.TldConfig.level = FINE
en conf / logging.properties
Después de eso, obtuve tantos archivos "ofensivos" que no me molesté en omitirlos (y también revertí al registro normal ...)
Para Tomcat 8 , tuve que agregar la siguiente línea a tomcat/conf/logging.properties
para que los tarros escaneados por Tomcat aparezcan en los registros:
org.apache.jasper.servlet.TldScanner.level = FINE
Para Tomcat 8, tuve que agregar la siguiente línea a catalina.properties para evitar frascos escaneados por Tomcat:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar
Si ayuda a alguien, acabo de anexar el contenido del archivo de salida siguiente a la entrada org.apache.catalina.startup.TldConfig.jarsToSkip=
existente.
Tenga en cuenta que /var/log/tomcat7/catalina.out
es la ubicación de su registro de 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
Espero que ayude.
Si le molestan las entradas adicionales en el registro, pero un segundo extra de tiempo de inicio no lo hace, solo agregue esto a su logging.properties
y olvídese de ello:
org.apache.jasper.servlet.TldScanner.level = WARNING
Tomcat 8.5 . Dentro de catalina.properties, ubicado en el conjunto de directorio / conf:
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=/*.jar
O vaya a context.xml, ubicado en el directorio Tomcat / conf y añada:
<JarScanner scanClassPath="false"/>