yet tldscanner tlds servlet scanned scanjars org one least jasper for contained logging jar compilation tomcat7 tld

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í -

  1. 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.
  2. Alternativamente, inserte tomcat.util.scan.StandardJarScanFilter.jarsToSkip=* para omitir todos los tomcat.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"/>