Trouble Shooting

[트러블슈팅] A bean with that name has already been defined and overriding is disabled.

  • -
728x90

김영한 강사님의 "스프링 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로 변경한 것이었다) 바꾸어둔 상태였기에, 이 방법으로 해결되는 것은 기대하지 않았다.

Build and run 부분

역시나 이 방법으로는 되지 않았다. 혹시나 해서 자바 버전도 변경해보았지만 추가적인 오류만 생길 뿐이었다.

자바 버전 변경시 발생하는 오류 (17로 설정했기 때문에 당연히 11로 돌아갈리가 없다.)

 

두번째로, 오류 메세지를 읽었을때 '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에서 뭔가 잘못한 게 분명하니 다시 시도해봐야겠다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.