Как исправить предупреждение компилятора 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
файл. У вас есть два варианта здесь -
- Перечислите все банки под
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
, Но это может стать громоздким, если у вас много банок или банки постоянно меняются. - В качестве альтернативы, Вставьте
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