개요
프로젝트 실행 후 DB에서 글 목록을 불러오려하면 JSON Serialization Error가 발생했다. DTO에서 사용하는 lombok에서 getter/setter를 생성하지 못하는 것과 관련이 있어보였다. lombok 설치 후 getter/setter가 정상적으로 생성되는 것을 확인 후 오류를 해결했다.
이슈
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class
프로젝트 아카이브를 Eclipse에 import하고 실행해보니, 위와 같은 에러가 발생하며 DB 글 목록을 불러오지 못했다. 글 작성 기능(INSERT)까지 테스트해보니 DB와 접속 자체에서 에러가 발생한 것은 아니며, 에러 로그대로 데이터를 알맞게 바인딩하지 못하고 모두 Null 데이터가 되어있었다.
원인
DTO 클래스에서 lombok을 사용하고 있었는데, 사이드의 outline을 보니 getter/setter를 생성하지 못하는 것을 뒤늦게 확인했다. 컴파일 에러가 발생하지 않아서 lombok을 따로 설치하지 않았다는 것을 인식하지 못했다. lombok은 pom.xml을 통해 maven에서 lombok 라이브러리를 불러와도, 개별적으로 설치하여 IDE에 적용이 필요했다.
경과 및 해결
lombok 설치
lombok 다운로드 링크: https://projectlombok.org/download
Download
projectlombok.org
위 링크에서 다운로드를 클릭하여 lombok.jar 파일을 받는다. 그리고 해당파일을 IDE가 설치되어 있는 경로에 위치시킨다.
이후 cmd를 이용해 해당 경로에 위치시켰던 lombok.jar를 실행하면 된다.
java -jar lombok.jar
위 명령어를 통해 lombok.jar 파일을 실행하면 설치 화면이 나타난다.
lombok.jar를 실행하면 사진3과 같이 경고창이 뜰 수 있는데, 그냥 무시하고 사진4의 화면에서 “Specify location”을 클릭하여 직접 lombok.jar를 위치시켰던 IDE 경로를 찾아 등록하면 된다.
이후 “Install/Update” 버튼을 클릭하면, 설치는 금방 끝나게된다.
이클립스 적용 확인
이후 이클립스 프로젝트로 돌아와, lombok이 적용되었는지 확인한다. 만약 설치 이후에도 outline에 getter/setter가 생성되지 않는다면,
- IDE 재시작
- project → clean
- run as→ maven clean
- Maven → Update project
무식한 방법이지만 위 목록의 방법들 중 어느 하나는 해결해 줄 것이다. 본인의 경우 IDE를 재시작한 후에 lombok이 적용되어 getter/setter가 생성되었지만 에러가 여전히 발생했다.
getter/setter가 생성되었음에도 DTO 클래스의 필드들이 노란 줄로 경고 메세지가 여전히 표시되어있었다. 아예 DTO 클래스의 모든 필드들을 삭제하고 다시 선언하니 경고 메세지도 사라지게 되었고 완전히 에러를 해결할 수 있었다. 이 모든 과정을 요약하면
- lombok 설치
- IDE 재시작 후 getter/setter 생성 확인
- lombok이 적용된 모든 필드 변수 삭제 후 재선언
이미지 참조
'개발 > 이슈' 카테고리의 다른 글
[Spring Boot + React] proxy 설정 이슈 (0) | 2024.07.22 |
---|---|
[HTML] 크롬 확장 프로그램으로 인한 HTML 속성 충돌 (bis_skin_checked, bis_label, bis_size ) (1) | 2024.07.16 |
[Eclipse] 프로젝트 생성 시 패키지 없음 - Project Facets (0) | 2024.02.27 |
[Git] Sourcetree 원격 브랜치 푸시 (Remote branch push) 무한로딩 오류 (1) | 2024.01.26 |
[JavaScript] 유튜브 Iframe API - 화질 설정 이슈 (setPlaybackQuality 함수 미작동) (1) | 2024.01.21 |