Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
관리 메뉴

ㅇ.ㅇ

[Tomcat] 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다. 본문

Error

[Tomcat] 적어도 하나의 JAR가 TLD들을 찾기 위해 스캔되었으나 아무 것도 찾지 못했습니다.

yun_ 2025. 2. 23. 23:12
반응형

 

 

에러 내용

org.apache.jasper.servlet.TldScanner.scanJars 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.

 

에러 파악

톰캣에서 출력되는 이 로그 메시지는 TLD(Tag Library Descriptor) 파일을 포함하지 않은 JAR 파일이 검색되었다는 뜻이다.

톰캣은 JSP 컴파일을 위해 WEB-INF/lib에 있는 JAR 파일들을 검사하면서 커스텀 태그 라이브러리(TLD) 를 찾는다. 그런데 많은 JAR 파일들은 TLD 파일을 포함하지 않음에도 불구하고, 톰캣은 기본적으로 이를 전부 스캔한다. 이 과정에서 불필요한 JAR 파일까지 탐색하게 되면 서버 구동 시간이 길어지고, JSP 컴파일 속도도 느려지는 문제가 발생한다.

 

해결 방법

그럼 어떻게 해야 할까? 어떤 JAR 파일이 검색되고 있는지 확인하려면 로그 레벨을 변경해야 한다.

1. logging.properties 파일 수정

아래 설정을 추가하면 톰캣이 스캔하는 JAR 파일 목록을 확인할 수 있다.

org.apache.catalina.startup.ContextConfig.level = FINE
org.apache.jasper.servlet.TldScanner.level = FINE

이후 톰캣을 재시작하면 어떤 JAR 파일들이 스캔되고 있는지 로그에서 확인할 수 있다.

2. conf/catalina.properties 파일 수정

앞에서 확인한 로그를 바탕으로 TLD 파일을 포함하지 않은 JAR들을 톰캣의 설정에서 제외할 수 있다. 아래와 같이 jarsToSkip 속성을 설정하면 톰캣이 불필요한 JAR 파일을 스캔하지 않는다.

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
rt.jar,\
spring-core-*.jar,\
spring-beans-*.jar,\
spring-context-*.jar,\
spring-tx-*.jar,\
hibernate-*.jar,\
log4j-*.jar,\
slf4j-*.jar

위 리스트의 파일들은 TLD 파일을 포함하지 않거나 JSP에서 필요한 태그 라이브러리를 제공하지 않는 JAR이기 때문에 안전하게 제외할 수 있다.

 

위처럼 수정하게되면 톰캣 시작 시간도 단축되고, 불필요한 JAR 스캔 제거로 성능 최적화, JSP 컴파일 속도 향상을 기대할 수 있다!

반응형