Recording/에러 기록장

[멋쟁이사자처럼 부트캠프 TIL 회고] BE 13기_85일차_"블로그 프로젝트 - 빌드 오류 해결"

LEFT 2025. 4. 11. 20:01

🦁멋쟁이사자처럼 백엔드 부트캠프 13기 🦁
TIL 회고 - [85]일차

🚀85차에 발생했었던 오류해결과정을 회고하고자한다.


빌드가 되지 않는 오류

 

⚠️오류원인

팀원들이 개발했던 엔티티들을 develop 브랜치에 Merge한 후 기능 개발에 대한 것을 분담할 수 있었다.

기능 개발 분담 후 develop 브랜치의 내용을 git pull 해서 실행시켜보려는데 오류가 발생했다.

  • main 클래스 실행시 (SpringBoot) 실행이 되지 않는 문제
오류 코드 : 
Error: LinkageError occurred while loading main class com.likelion.momentreeblog.MomentreeblogApplication

✅해결방법

SDK 버전 17 → 21로 변경

Project Structure 에서 SDK변경


빌드 시 @SuperBuilder 관련 오류

 

⚠️오류원인

Task :compileJava C:\Workspace\Lion_Project\momentree_blog\backend\momentreeblog\src\main\java\com\likelion\momentreeblog\domain\board\board\entity\Board.java:46: warning: @SuperBuilder will ignore the initializing expression entirely. If you want the initializing expression to serve as default, add @Builder.Default. If it is not supposed to be settable during building, make the field final. private List<Like> likes = new ArrayList<>(); // 좋아요 테이블, 리스트타입 ^ 1 warning OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

 

💡오류분석

필드에 직접 초기값을 주었는데, 클래스에 @SuperBuilder가 붙어 있는 경우 이 초기값이 무시된다는 경고

즉, likes = new ArrayList<>() 이 초기화 코드는 빌더로 객체 생성 시에는 적용되지 않음

✅해결방법

기본값으로 유지하는 방법으로 해결한다.

@Builder.Default
@OneToMany(mappedBy = "board", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Like> likes = new ArrayList<>(); // 좋아요 테이블, 리스트타입

 

  • @SuperBuilder 사용 시에도 likes 필드에 기본값으로 new ArrayList<>()가 자동으로 설정

  • 정리하자면
    @SuperBuilder will ignore the initializing expression... 경고문구
    ➡️ Lombok의 @SuperBuilder는 필드 초기값 무시
    @Builder.Default 추가

🚀회고 결과 :

팀 프로젝트로 엔티티를 각자 개발한 후 Merge하는 과정에서도 어려움이 많았는데

Merge한 것을 pull 받아 테스트해보는 과정에서 오류가 발생하여 기능 개발 착수하기 전부터

빌드 오류 해결에 힘썼던 것 같다.

고려해야할 사항들이 많음을 깨닫는 회고였다.