Как исправить предупреждение компилятора JSP: один JAR был отсканирован на предмет TLD, но не содержал TLD?

При запуске приложения или компиляции JSP через ant, Tomcat 7 Jasper жалуется на лишний или неуместный файл JAR. Я получил ниже сообщение

**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. 

Как пропустить ненужные файлы JAR во время сканирования может улучшить время запуска и время компиляции JSP в Tomcat?

как включить лучший вывод?

10 ответов

Tomcat 8.5. Внутри catalina.properties, расположенного в каталоге /conf, установлено:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar

Или перейдите в context.xml, расположенный в каталоге Tomcat /conf, и добавьте:

<JarScanner scanClassPath="false"/>

Для Tomcat 8 мне пришлось добавить следующую строку в tomcat/conf/logging.properties чтобы банки, отсканированные Tomcat, показывались в журналах:

org.apache.jasper.servlet.TldScanner.level = FINE

Вышеупомянутое решение не работает для меня. Вместо этого я просто удалил хеш (#) из последней строки файла logging.properties, чтобы он заработал.

# To see debug messages in TldLocationsCache, uncomment the following line:
org.apache.jasper.compiler.TldLocationsCache.level = FINE

Следующим шагом является добавление jar-файлов, которые Tomcat 7 ищет в файлах catalina.properties сразу после следующей строки.

org.apache.catalina.startup.TldConfig.jarsToSkip=

Если это кому-нибудь поможет, я просто добавил содержимое выходного файла ниже к существующему org.apache.catalina.startup.TldConfig.jarsToSkip= запись.

Обратите внимание, что /var/log/tomcat7/catalina.out это местоположение вашего журнала кота.

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

Надеюсь, это поможет.

Предупреждение появляется, потому что Tomcat сканирует все файлы JAR на предмет TLD (определения библиотек тегов).

Шаг 1: Чтобы увидеть, какие JAR-файлы выдают это предупреждение, вставьте следующую строку в tomcat / conf / logging.properties

org.apache.jasper.servlet.TldScanner.level = FINE

Теперь вы сможете увидеть предупреждения с подробным описанием того, какие файлы JAR вызывают предварительное предупреждение.

Шаг 2 Поскольку пропуск ненужных файлов JAR во время сканирования может улучшить время запуска и время компиляции JSP, мы пропустим ненужные файлы JAR в catalina.properties файл. У вас есть два варианта здесь -

  1. Перечислите все банки под tomcat.util.scan.StandardJarScanFilter.jarsToSkip, Но это может стать громоздким, если у вас много банок или банки постоянно меняются.
  2. В качестве альтернативы, Вставьте tomcat.util.scan.StandardJarScanFilter.jarsToSkip=* пропустить все банки

Теперь вы не должны видеть вышеупомянутые предупреждения, и если у вас достаточно большое приложение, это должно сэкономить вам значительное время при развертывании приложения.

Примечание: протестировано в Tomcat8

Раскомментируйте эту строку (в /conf/logging.properties)

org.apache.jasper.compiler.TldLocationsCache.level = FINE

Работа для меня в Tomcat 7.0.53!

Для Tomcat 8 мне нужно было добавить следующую строку в catalina.properties для предотвращения сканирования jar-файлов, которые сканирует Tomcat:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar

Ничего из вышеперечисленного не сработало для меня (tomcat 7.0.62)... Как отмечает Sensei_Shoh, посмотрите класс над сообщением и добавьте его в logging.properties. Мои журналы были:

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.

поэтому я добавил

org.apache.catalina.startup.TldConfig.level = FINE

в conf/logging.properties

После этого я получил так много "оскорбительных" файлов, что не стал их пропускать (а также вернулся к нормальной регистрации…)

В сообщении об ошибке указывается, какой регистратор он использует, поэтому установите этот регистратор .level:

[jasper] Jul 31, 2012 7:15:15 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar

Так логгер org.apache.jasper.compiler.TldLocationsCache, В вашем logging.properties файл, добавьте эту строку:

org.apache.jasper.compiler.TldLocationsCache.level = FINE

Если лишние записи в журнале беспокоят вас, но лишняя секунда времени запуска не делает, просто добавьте это в свой logging.properties и забудь об этом

org.apache.jasper.servlet.TldScanner.level = WARNING
Другие вопросы по тегам