인프런 커뮤니티 질문&답변

찬영님의 프로필 이미지

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

ServletApplication 실행 안됨

해결된 질문

작성

·

198

·

수정됨

0

현재 HTTP 요청 데이터 - 개요를 듣고 있습니다.

강의 초반부인데 ServletApplication 실행이 아래의 오류는 아닌데 서버가 띄어지지 않고 바로 종료가 됩니다

 

2024-04-19T15:53:01.823+09:00 INFO 17800 --- [servlet] [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 17.0.10 with PID 17800 (C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\mvc1\servlet\servlet\out\production\classes started by uniti in C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\mvc1\servlet\servlet)

2024-04-19T15:53:01.830+09:00 INFO 17800 --- [servlet] [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"

2024-04-19T15:53:03.289+09:00 WARN 17800 --- [servlet] [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed

2024-04-19T15:53:03.309+09:00 INFO 17800 --- [servlet] [ main] .s.b.a.l.ConditionEvaluationReportLogger :

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.

2024-04-19T15:53:03.364+09:00 ERROR 17800 --- [servlet] [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1223) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:202) ~[spring-context-6.1.6.jar:6.1.6]

at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[spring-context-6.1.6.jar:6.1.6]

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[spring-context-6.1.6.jar:6.1.6]

at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.5.jar:3.2.5]

at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na]

Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/annotation/WebServlet

at org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:62) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-3.2.5.jar:3.2.5]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1257) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:951) ~[spring-beans-6.1.6.jar:6.1.6]

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1217) ~[spring-beans-6.1.6.jar:6.1.6]

... 16 common frames omitted

Caused by: java.lang.ClassNotFoundException: jakarta.servlet.annotation.WebServlet

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]

at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]

at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na]

... 22 common frames omitted

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

찬영님, 문제를 겪고 계신 ServletApplication 실행 관련 오류는 Spring Boot 애플리케이션 구동 시 필요한 서블릿 라이브러리가 없거나 잘못된 버전의 라이브러리를 참조하여 발생하는 문제로 보입니다. 오류 메시지 중 java.lang.NoClassDefFoundError: jakarta/servlet/annotation/WebServletWebServlet 어노테이션을 찾을 수 없다는 것을 의미합니다.

이 문제는 대체로 두 가지 주요 원인에 의해 발생할 수 있습니다:

  1. 잘못된 서블릿 API 의존성: 애플리케이션의 build.gradle 또는 pom.xml 파일에 서블릿 API 관련 의존성이 올바르게 선언되지 않았거나, Spring Boot의 버전과 호환되지 않는 서블릿 API 버전이 사용되고 있을 수 있습니다.

  2. Spring Boot 버전과의 호환성 문제: Spring Boot 2.5.x 이하와 같은 이전 버전의 경우 javax.servlet 패키지를 사용하는 반면, Spring Boot 2.6.x 이상 버전에서는 jakarta.servlet 패키지로 이전되었습니다. 실행 중인 프로젝트에서 사용 중인 Spring Boot 버전과 서블릿 API 의존성 간의 불일치로 인해 발생할 수 있습니다.

비슷한 문제에 대한 유용한 참고 자료를 제공드리겠습니다:

  • 서버 실행 오류 - 해당 링크에서는 Servlet 실행 중 발생하는 오류와 관련된 질문과 답변을 다루고 있으며, JDK 또는 Spring Boot 설정과 관련하여 해결책을 제시하고 있습니다.

  • 톰캣 서버가 안열립니다 그리고 RUN이 비활성화됩니다 - 비슷한 배경에서 발생하는 문제를 다루고 있으며, 여기에서는 IDE 설정이나 의존성 문제를 점검하라는 조언이 포함되어 있습니다.

해결 방안으로, 프로젝트의 Spring Boot 버전과 일치하는 서블릿 API 의존성을 확인하고 필요한 경우 업데이트하는 것을 권장드립니다. 또한, IDE의 빌드 설정(예: IntelliJ IDEA의 경우 Build, Execution, Deployment > Build Tools > Gradle에서 IntelliJ IDEA 대신 Gradle을 사용할 것을 선택)을 점검하실 것을 제안드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

찬영님의 프로필 이미지

작성한 질문수

질문하기