반응형
김영한님의 강의를 이제 들어볼까 하면서 스프링부트를 실행했는데 에러가 발생했다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.3.19.jar:5.3.19] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.19.jar:5.3.19] at
... 생략
저번에 실행했을 때만해도 잘 작동했고, 코드 수정도 안 했는데 에러가 나서 일단 검색해봤다.
검색했더니 이 에러를 해결하는 방법은 두 가지가 있었다.
첫 번째, 맥북 기준 Preferences.. > gradle 검색 > gradle Project에서 IntelliJ로 되어 있으면 Gradle로 변경해주면 해결된다.
왜 Gradle로 변경해야지 정상적으로 실행될까? 이번 강의 전에서도 계속 IntelliJ로 설정해도 실행 관련 에러는 발생하지 않았다. 이번 스프링 MVC 1편 강의에서만 이 에러가 발생한 이유는 바로 스프링부트 프로젝트를 생성할 때 이전 강의에서는 Jar 파일로 받았었는데 이번 강의에서는 War파일로 받았기 때문이다. War의 경우 톰캣에서 정상 시작되지 않은 문제가 발생할 수 있다고 한다. 더욱 정확한 설명은 김영한님께서 해주신다길래 모셔왔다.
반응형
이 문제를 해결할 두 번째 방법은 Gradle Project는 IntelliJ로 냅두고 싶은 사람이 적용하면 좋다. 설정은 IntelliJ로 놔두고 build.gradle 파일을 연다.
// providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
이 부분을 주석처리 한 후에 refresh를 하면 정상으로 실행된다.
정상적으로 실행되니 이제 다시 강의 들으러 갑니다.
반응형