230612_ ApplicationContextException

hoy_·2023년 6월 12일
0

Today, I Learned

목록 보기
17/36



1. 오늘의 일정

  1. spring 입문, 강의 듣기

  2. 버전 동기화 오류 해결




2. 배운 내용

  1. HTTP 프로토콜의 이해

  2. WAS의 역할

  3. MVC패턴 개념




3. 발생한 오류

  1. 강의에서 사용한 버전과 동기화하는 과정에서 문제가 생겼다. 처음 만든 java 클래스 파일조차 실행이 막혀버린 것.

  2. 구글링해서 나온 여러 가지 방법을 시도해 보고 조언을 구해 겨우 해결했다. 다시 생각해 봐도 혼자서는 도저히 해결할 수 있을 것 같지가 않아 기록으로 남긴다.

Web application could not be started as there was no org.
springframework.boot.web.servlet.server.
ServletWebServerFactory bean defined in the context.

Action:

Check your application's dependencies for a supported servlet web server.
Check the configured web application type.

문제의 오류. 이때까지만 해도 Tomcat이나 경로 설정 문제인 줄 알았다.
서버 자체가 열리지 않고 중단되는 상태다.

해결

  1. 첫 번째 방법,
    우선 @SpringBootApplication 애노테이션을 붙였는지 확인해 본다.
    대부분의 오류가 위의 이유로 빈번하게 나타난다는데 내 경우엔 해결되지 않았다.



  2. 두 번째 방법, Gradle 설정을 바꿔본다.

Settings - Build, Execution, Deployment - Gradle 경로의
Build and run using / Run tests usingGradle (Default)에서 IntelliJ IDEA로 바꿔볼 것

이후에 실행해보면 서버가 시작하긴 하지만, exit code 1로 비정상종료 된다.



3. 세 번째 방법, application.properties 위치에 코드를 추가한다.

spring.main.web-application-type=none

스프링부트를 웹 어플리케이션이 아닌 CLI 형식의 명령어를 구동하기 위해서 생성했을 경우 사용하는 명령어라고 한다. 따라서 웹을 만들고 싶어 생성했다면 위 방법은 제대로 된 해결법은 아니다.



4. 결국 내가 해결한 방법은...

Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.0.

gradle이 정상 작동되지 않는 점, 위의 에러가 뜨는 점을 토대로 밝혀낸 에러의 원인은 로컬 java 버전이 일치하지 않는다는 것이었다.
나는 11 버전을 사용하고 있고 동기화는 3.1.0으로, 17버전을 사용하려 하니 생긴 문제다.

설치된 java를 삭제하고 원하는 버전으로 재설치, 환경변수를 설정해주었다.

이후 한글 깨짐 현상이 일어나 UTF-8로 인코딩도 다시 해준다.




4. 앞으로의 나는

  1. spring MVC 개념 정리할 것.
  2. 전체적으로 어려운 내용이라 반복학습을 해야 할 것 같다. 우선 빠르게 1회독 할 것.
profile
배우는 사람

0개의 댓글