Kotlin 에서 Lombok을 사용할 수 없는 문제

최근 자바 스프링부트로 되어있는 사내 프로젝트에 코틀린을 일부분 도입하려다 대차게 실패했다..
사내 프로젝트에 Lombok을 사용하고 있었는데, 코틀린이 롬복을 사용한 Bean Class 에 접근하지 못하고 있었다.

당시

1
Kotlin: Cannot access '가가' it is private member of '나나'

이런 에러 메세지를 띄우며 컴파일이 되지 않았다.

처음엔 자바로 짜여진 클래스의 private object에 접근을 못해서 나는 에러인 줄 알았으나 롬복 문제였다.
kotlin-doesnt-see-java-lombok-accessors
그리고 위 링크에서 이유를 알 수 있었다.

위 링크를 요약하자면

일반적으로 JVM 에선 코틀린이 먼저 컴파일 된 후 자바가 컴파일 된다.
코틀린이 자바의 롬복으로 된 클래스에 접근하려 했으나 getter setter가 만들어지지 않아서 접근을 하지 못한다.
롬복은 컴파일시 동작 하는 어노테이션이기 때문이다.
강제로 컴파일러가 자바 먼저 컴파일하게 바꿀 순 있지만 그렇게 되면 자바에서 코틀린 코드를 사용할 수 없다.

코틀린과 자바가 100% 호환은 맞지만 자바로 만들어진 third-party 라이브러리 들과 호환 되는건 아닌 것 이다.
롬복을 사용한 자바 파일들을 전부 코틀린으로 바꾸지 않는 한 코틀린을 현재 진행 중인 프로젝트에 적용 하긴 힘들 것 같다.

두줄요약

  • 코틀린과 롬복을 같이 쓸 수 없다.
  • 코틀린을 정말 쓰고싶다면 롬복을 사용한 자바 파일을 코틀린 파일로 바꿔야 된다.

19.06.26 기준 자세한 포스팅이 나왔습니다! Naver D2 Kotlin 도입 과정에서 만난 문제와 해결 방법

혹 궁금하거나 오류가 있다면 댓글 남겨주세요😄