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...
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 는 뭐지?
여기까지 논의가 완료되서...
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
이미 대문짝 만하게 핀이 걸려있다.. 👍







댓글
댓글 쓰기