[일간에러] error: invalid source release: 21

작성: 2024.01.12

수정: 2024.01.12

읽는시간: 00 분

Development/Daily Error

반응형

문제

인텔리제이의 Spring Initializr를 이용해서 JDK 21을 사용하는 스프링부트 프로젝트를 생성했다.

생성할 때 JDK도 잘 설정해 주었는데, 프로젝트 생성 후 서버를 띄워보려고 하니 다음의 에러가 발생하며 컴파일이 되지 않았다.

1

원인

원인을 찾아보자. 일단 Java 21을 지원하는 Gradle 버전을 찾아본다.

4

https://docs.gradle.org/8.4/release-notes.html#support-for-building-projects-with-java-21

Gradle 8.4 버전부터 Java 21을 지원한다.

gradle --version

2

위에 보이는 것 처럼, 컴퓨터에 설치된 gradle 버전은 Gradle 8.0.2 로 확인된다. 버전이 낮기 때문에 얼핏 보면 설치된 Gradle 버전이 문제네! 할 수 있겠지만 스프링부트 프로젝트는 시스템에 설치된 Gradle과 상관 없이 프로젝트에 따라 Gradle Wrapper(gradlew)를 사용한다는 것이다. 연관이 없다.

그럼 이번엔 gradlew를 확인해보자.

./gradlew --version

3

gradlew는 Gradle 8.5로 확인된다. 문제가 없다.

그런데 위와 아래에서 공통적으로 나오는 것이 있으니 JVM이 17.0.8 인 것이 눈에 띈다.

그렇다, gradle 버전이 어떻든간에 빌드할 때 내 시스템에 설치된 JVM이 제 역할을 해줘야 한다.

해결

JVM 버전을 최신으로 업데이트 해주자.

방법은 모두 다르겠지만, 나는 SDK 를 사용하기 때문에 아래의 순서로 자바 버전을 변경했다.

sdk list java
sdk install java 21.0.1-tem
sdk default java 21.0.1-tem

이후 java --version 을 입력하면 새로 설치된 자바 버전이 잘 표기된다.

5

이렇게 한 후에 빌드를 해보면 문제 없이 되는걸 확인할 수 있다.

./gradlew clean build

6

하지만 IDE에서는 여전히 실행이 되지 않았는데 이때는 인텔리제이의 Gradle 설정을 확인해야한다.

Settings > Build, Execution, Deployment > Build Tools > Gradle

7

그러면, Gradle의 Distribution은 Wrapper로 잘 설정이 되어 있지만, Gradle JVM 설정이 변경되지 않은것을 볼 수 있다. 이걸 변경해주면 된다.

8

설정을 변경 한 후에 다시 서버를 띄워보면

9

문제 없이 실행되는 것을 확인할 수 있다.

References

반응형