1. 문제 상황
JDK21 버전 업 중
java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
라는 에러와 함께 빌드 실패
2. 해결
JDK21과 호환되지 않는 롬복(lombok) 버전 문제로 확인, (JDK21과 호환되는 최소 롬복(lombok) 버전은 1.18.30이다.)
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
기존 사용 중인 구버전 롬복(lombok)을 작성일 기준 최신버전이자 JDK21 호환 최소 버전인 1.18.30으로 변경해 주면 정상적으로 빌드가 된다.
3. 추가
스프링부트 3, JDK21 버전업을 완료하고 업데이트 중 해결한 문제들을 포스트로 남기던 와중에 돌아보니,
java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid
해당 에러는 롬복뿐만 아니라 JDK21에서 호환 안 되는 라이브러리가 있을 시 자주 보이는 에러이다. 혹시 JDK 업데이트 중 해당 에러를 발견한 것이라면, 롬복뿐 아니라 다른 라이브러리에 대한 버전 검토를 해야 한다.
참고
* maven repo : https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.30