본문 바로가기

Java/Spring

"No annotated classes found for specified class/package" 오류와 함께 dispatcher가 URI와 매핑된 컨트롤러를 찾지 못하는 문제

테스트 환경 및 주요 아젠다

닫기

이 프로젝트의 개발 환경

  • 개발 언어 및 환경
    • OpenJDK 12
    • Spring: spring-mvc: 5.0.2.RELEASE
    • Tomcat: tomcat-jdbc: 8.5.27
    • Gradle 7.3
  • 기타 환경
    • macOS Sonoma 14.1.1
    • IntelliJ IDEA 2020.3 Ultimate Edition

DispatcherServlet이 URI와 매핑된 컨트롤러를 찾지 못하고 있습니다. 관련 오류 메시지는 다음과 같습니다.

shell
닫기
org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI {URI 경로} in DispatcherServlet with name {dispatcher 이름}

스프링 애플리케이션은 톰캣에서 실행되고 있습니다.

톰캣이 실행되며 No annotated classes found for specified class/package 오류가 발생합니다.

shell
닫기
org.springframework.web.context.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions No annotated classes found for specified class/package {설정 클래스 이름}

문제 해결: DispatcherServlet 설정 확인

web.xml 파일에서 설정하는 DispatcherServlet의 contextConfiguration 항목을 확인합니다.

이 파라미터에서는 스프링 설정 클래스 목록을 지정합니다.

shell
닫기
<servlet> ‌<servlet-name>dispatcher</servlet-name> ‌<servlet-class> ‌‌org.springframework.web.servlet.DispatcherServlet ‌</servlet-class> ‌... ‌<init-param> ‌‌<param-name>contextConfigLocation</param-name> ‌‌<param-value> ‌‌‌config.MvcConfig ‌‌‌config.ControllerConfig ‌‌</param-value> ‌</init-param> ‌... </servlet>

예제에서 등록하고 있는 스프링 설정 클래스는 config.MvcConfigconfig.ControllerConfig입니다.

예제의 두 클래스의 패키지 경로가 잘못 입력되어 있습니다. 설정 클래스의 FQCN(Full Qualified Class Name)을 올바르게 지정하는 것으로 해결되었습니다.

정리 및 복습

  • DispatcherServlet에서 No mapping found for HTTP request with URI {URI 경로} in DispatcherServlet with name {dispatcher 이름} 오류가 발생하고 있습니다.
  • 톰캣이 실행되며 No annotated classes found for specified class/package 오류가 발생합니다.
  • DispatcherServlet 설정에서 스프링 설정 클래스의 FQCN가 올바르게 입력되어 있는지 확인합니다.