• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

안녕하세요.

21.03.15 11:20 작성 조회수 13.4k

3

안녕하세요, 먼저 정말 기다리던 강의를 드디어 볼 수 있게돼서 감사하다는 말씀을 드립니다!

강의를 따라가던 중 문제가 발생하여 조언을 구하고자 질문을 드립니다.

김영한 팀장님의 기존 인강에서는 [Settings] -> [Build Tools] -> [Gradle] 에서 Build and run using / Run tests using 모두 'IntelliJ IDEA'로 설정 후 강의를 진행하셔서 저도 그렇게 강의를 모두 수강했고 현재 혼자 개발 중인 서비스도 'IntelliJ IDEA' 로 설정해서 진행 중입니다.

이번 스프링 MVC 1편 인강에서는 섹션2 - 프로젝트 생성에서부터   Build and run using 을 'IntelliJ IDEA' 로 설정하면 다음과 같은 에러가 발생하고, Run tests Using 을 'GRADLE'로 설정하면 또 다음과 같은 에러가 발생합니다.

[Build and run using - 'IntelliJ IDEA' 설정 후 Application Run 한 상황 ]

2021-03-15 11:16:43.740  INFO 12576 --- [           main] travelbeeee.sec02.Sec02Application       : Starting Sec02Application using Java 14.0.2 on DESKTOP-SJ3E1UQ with PID 12576 (C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02\out\production\classes started by HyunSeok in C:\Users\HyunSeok\Desktop\studyWithMe\gitHub\studyWithMe\스프링MVC1편\sec02)

2021-03-15 11:16:43.744  INFO 12576 --- [           main] travelbeeee.sec02.Sec02Application       : No active profile set, falling back to default profiles: default

2021-03-15 11:16:44.376  WARN 12576 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: 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

2021-03-15 11:16:44.385  INFO 12576 --- [           main] ConditionEvaluationReportLoggingListener : 

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

2021-03-15 11:16:44.406 ERROR 12576 --- [           main] o.s.boot.SpringApplication               : Application run failed

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:537) ~[spring-beans-5.3.4.jar:5.3.4]

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

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

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

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

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

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

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

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

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

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

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

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

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

at travelbeeee.sec02.Sec02Application.main(Sec02Application.java:13) ~[classes/:na]

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

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

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

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

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

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

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

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

... 14 common frames omitted

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

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

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

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

... 21 common frames omitted

Process finished with exit code 1

[ Run tests Using 을 Gradle로 설정 후 Test 를 빌드한 상황 ]

> Task :compileJava UP-TO-DATE

> Task :processResources UP-TO-DATE

> Task :classes UP-TO-DATE

> Task :compileTestJava UP-TO-DATE

> Task :processTestResources NO-SOURCE

> Task :testClasses UP-TO-DATE

> Task :test FAILED

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':test'.

> There were failing tests. See the report at: file:///C:/Users/HyunSeok/Desktop/studyWithMe/gitHub/studyWithMe/스프링MVC1편/sec02/build/reports/tests/test/index.html

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

4 actionable tasks: 1 executed, 3 up-to-date

설정을 아래 사진과 같이 바꿔주면 문제가 없어서 당장 수업을 듣는데는 지장이 없지만, 구글링을 해봐도 이유를 알아내기 어려워 조언을 구하고자 질문을 남깁니다.  

답변 2

·

답변을 작성해보세요.

17

안녕하세요. 현석님

IntelliJ 무료 버전의 경우 해당 설정을 IntelliJ IDEA가 아니라 Gradle로 설정해야 합니다.

Jar 파일의 경우는 문제가 없는데, War의 경우 톰캣이 정상 시작되지 않는 문제가 발생할 수 있습니다.

유료 버전은 모두 정상 동작합니다.

또는 `build.gradle`에 있는 다음 코드를 제거해도 됩니다.

//`providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'`

메뉴얼을 최신버전으로 업데이트 했는데요. 관련 내용을 어제 포함해두었습니다^^

감사합니다.

이현석님의 프로필

이현석

질문자

2021.03.16

답변 감사드립니다! 항상 좋은 강의 찍어주셔서 다시 한 번 감사드리고, 다음 MVC 2편도 기대하겠습니다 :))

1

Sun님의 프로필

Sun

2022.02.08

저도 비슷한 문제가 있었는데, 영한쌤이 말씀해주신대로 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 을 지우고 나니 정상 실행이 되네요.
build.gradle 에서 위에 것을 지우고 나서 정상 실행이 되는 이유가 무엇인지 궁금합니다.
혹시 starter-web 에 tomcat 이 포함되어있는데 또 다른 tomcat 을 가져와 충돌로 인해 문제가 생겼던것인가요? 답변주시면 감사하겠습니다ㅎ

다음을 참고해주세요.

https://www.inflearn.com/questions/176890

감사합니다.