김영한 강사님의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술"의 "단순하고 실용적인 컨트롤러 - v4"를 학습하던 와중, 빌드 오류가 발생하였다.
오류 상황
V3를 모두 완성하고, V4의 코드를 run 하고자 하였는데, 빌드 단계에서 문제가 발생하였다.
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'frontControllerServletV3' could not be registered. A bean with that name has already been defined and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
Execution failed for task ':ServletApplication.main()'.
> Process 'command '/Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
해결법
첫번째로 시도해 본 방법은 Gradle을 다시 변경하는 것이었는데, 이미 기존에 IntelliJ IDEA에서 무료 버전의 경우 war 파일은 오류가 발생 할 수 있다는 글을 보고 (실제로 필자도 빌드를 IntelliJ IDEA로 했을때 오류가 발생하여 Gradle로 변경한 것이었다) 바꾸어둔 상태였기에, 이 방법으로 해결되는 것은 기대하지 않았다.
역시나 이 방법으로는 되지 않았다. 혹시나 해서 자바 버전도 변경해보았지만 추가적인 오류만 생길 뿐이었다.
두번째로, 오류 메세지를 읽었을때 'frontControllerServletV3'에 문제가 있다는 생각이 들어, 해당 자바파일을 아예 삭제 / 강사님의 코드에서 ctrl C V 이렇게 두 개를 모두 시도하였다. 그러나 두가지 시도 모두 여전히 오류를 해결하지 못했다.
세번째로 그냥 port 번호를 바꾸고자 하였다. 하지만 이 방법으로도 같은 오류만 발생하였다.
위 두 방법 외에도 스택오버플로우와 인프런 검색에서 나온 방법들을 시도하였지만 전부 실패하였다.
그러나 인텔리제이의 다른 프로젝트 파일 실행시 멀쩡하게 빌드가 되었기 때문에 분명 이 프로젝트의 문제임이 틀림없었다.
결국 다시 처음 오류 메세지로 돌아가 오류메세지를 다시한번 읽어보았다. 이때 Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
라는 문구를 보고 해당 문단을 application.properties에 추가하였다.
그동안의 구글링이 무색하게,,, 바로 해결되었다.
+++ 완벽한 해결인 줄 알았으나 빌드만 되었다.
매일 진행한 만큼 레포에 올리고 있어서 V3까지의 코드가 남아있는데, 이 프로젝트는 잘 실행되는 걸 확인했다. 이번 V4에서 뭔가 잘못한 게 분명하니 다시 시도해봐야겠다.
'Trouble Shooting' 카테고리의 다른 글
[MySQL] mysql 재설치 (0) | 2023.07.25 |
---|---|
[Git] 잘못 올린 커밋, 복구해보자 (0) | 2023.07.19 |
[코틀린] Dependency 'androidx.appcompat:appcompat-resources:1.6.1' 관련 버전 오류 (0) | 2023.03.09 |
[트러블슈팅] Hyper-V 오류 (윈도우) (0) | 2023.02.04 |
[트러블슈팅] H2 DB 연결 오류 (맥) (0) | 2023.02.03 |
댓글