Как исправить предупреждение 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?

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

Ответ 1

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

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

Ответ 2

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

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

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

<JarScanner scanClassPath="false"/>

Ответ 3

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

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

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

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

Ответ 4

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

Обратите внимание, что /var/log/tomcat7/catalina.out - это местоположение вашего журнала 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

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

Ответ 5

Для Tomcat 8 мне пришлось добавить следующую строку к каталинам .properties для предотвращения сканирования банками Tomcat:

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

Ответ 6

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

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

Работайте со мной в tomcat 7.0.53!

Ответ 7

Ни один из вышеперечисленных не работал у меня (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

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

Ответ 8

В сообщении об ошибке указано, какой регистратор он использует, поэтому установите этот журнал .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

Ответ 9

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

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

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

Теперь вы должны быть в состоянии видеть предупреждения с деталями, из которых JARs вызывают внутреннее предупреждение

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

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

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

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