VSCode Java에서 Lombok 사용시 The Java feature 'Flexible Constructor Bodies' is only available with source level 25 and above 오류

VSCode Java에서 Lombok 사용시 The Java feature 'Flexible Constructor Bodies' is only available with source level 25 and above 오류

오랜만에 단순 프로젝트 열어봤는데...

다음 오류가 뜨길레 확인을 해보았다...


작성일: 2026-10-18-a


문제

프로젝트 설정이 Java 21로 명확하게 들어가 있는데...

  <properties>
   <java.version>21</java.version>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <maven.compiler.source>${java.version}</maven.compiler.source>
   <maven.compiler.target>${java.version}</maven.compiler.target>
  ...

Language Support for Java 확장(vscode-java)이 Java 25 기준으로 동작하게 되면서,

Lombok이 왠지 이 프로젝트가 Java 25 환경이 준비된 줄 알고 착각해서 생기는 문제같은? 😅

이 문제를 해결하려면...

 

 

해결?

Java 21 런타임을 최종 지원하는...

1.56 버전으로 다운 그레이드를 하거나...

특정 버전 설치...

1.560 버전 선택


그냥 생성자 생성 관련해서 lombok 어노테이션을 사용하지 않는 것 정도일 것 같다.

  • 필수 인자에 대한 생성자 생성 lombok 어노테이션 @RequiredArgsConstructor

    ...
    @RequiredArgsConstructor
    public class ServletConfig implements WebMvcConfigurer {
    ​
     private final ApplicationContext applicationContext;
    ...
  • 직접 선언으로 변경

    ...
    public class ServletConfig implements WebMvcConfigurer {
    ​
     private final ApplicationContext applicationContext;
    ​
     public ServletConfig(ApplicationContext applicationContext) {
       this.applicationContext = applicationContext;
    }
    ...

VSCode User Settings의 다음 설정으로 바꿀 수도 있다고 생각할 수도 있는데,

1.57.0에서는 이걸 Java 21버전으로 지정하더라도 25이상으로 고정해버린다. 😂

"java.jdt.ls.java.home": "C:\\JDK\\21" 

Flexible Constructor Bodies 는 뭐지?

JEP 513: Flexible Constructor Bodies 여기까지 논의가 완료되서...

Java 25부터 정식반영된 것 같다.

겉보기에는 상속된 클래스의 생성자에서...

super()위에다 코드를 추가할 수 있게 완화된 언어규칙이 Java 25에 추가된 것 같은데...

아마도 Lombok을 Java 25환경에서 실행하면

그거에 맞춰서 super() 윗부분에 뭔가 코드를 생성해서.. 저런 오류가 나는건지? 🤔


super() 위에다가 아무코드나 넣어봤다..

  public ServletConfig(ApplicationContext applicationContext) {
   System.out.println("super() 호출 전에 코드 수행");
   super(); // 오류 밑줄 쳐지는 부분...💥
   this.applicationContext = applicationContext;
}

vscode-java확장의 1.57버전에서 @RequiredArgsConstructor lombok 어노테이션을 사용했을 때처럼 ...

1.56 버전으로 vscode-java확장을 다운그레이드 한 후, super() 앞에 아무 코드나 넣어보기!


동일한 오류가 발생했다.

이 상태에서 프로젝트의 Java 버전을 잠깐 올려보면? 그럼 사라지나...😅

...
<properties>
 <java.version>25</java.version> <!-- pom.xml에서 Java 버전을 25로 올림 -->
...

그러면 당연히 사라진다...

그러나 이것 때문에 프로젝트의 Java 버전 자체를 올리는건 문제가 있긴하다...😅

나야 스터디 프로젝트이거나 단순 샘플이라서 올리는데 별 문제는 없지만...

수많은 복잡한 이해관계와 복잡한 로직, 많은 라이브러리들이 연관된 운영 코드는 Java 버전 올리는 것 자체가 꽤 큰 일이다..😂



다음으로... vscode-java 확장의 시험판(베타버전?)을 설치해보면...

혹시 몰라서 시험판(pre-release)을 설치하고 확인해보았다..

시험판 버전 설치

마지막 업데이트는 6분전이던데...😅

vscode-java 확장 버전은... 1.58.2026101608 이다.

1.58의 시험판 버전 설치하니 문제 해결됨..👍

이 버전을 사용하니.. 지금까지 언급했던 오류가 발생하지 않는다..

개발팀에서 문제를 인지하고 고친듯하다..👍

vscode-java 1.58 정식 버전 나오면... 잘쓰면 될 듯 ..😄



결론...

vscode-java 확장을 사용하는 lombok을 사용하는 Java 25 미만 환경의 프로젝트에서...

위와 같이 생성자 생성용 lombok 어노테이션에서 Flexible Constructor Bodies 관련해서 오류가 발생하면...

일단 vscode-java의 자동 업데이트를 끄고...

1.56 버전으로 다운그레이드해서 설치해서 사용하다가..

1.58 정식 버전 출시되면.. 그때 최신 버전 설치하는 것이, 가장 좋은 방법이 될 것 같다.


그런데... vscode-java 이슈 페이지 가보니...

vscode-java의 리포지토리 이슈 pin 걸린거...

False positive "Flexible Constructor Bodies is only available with source level 25 and above" with Lombok @RequiredArgsConstructor on Java 21

이미 대문짝 만하게 핀이 걸려있다.. 👍

 

하여튼 vscode-java 확장을 1.56으로 다운그레이드하거나... 

1.58 출시 예정 버전 설치하면... 해결된다...😅😅


댓글

이 블로그의 인기 게시물

전자정부 프레임워크 v5.0 교육자료 IDE, 다른 드라이브에 설치하는 완벽 가이드

주방등을 LED 모듈로 교체

SMC WSKP100 - 무선 스카이프 전화기