gradle 설정 파일 오류 발생(feat. JDK버전) Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.
gradle 설정파일을 실행하는데, 아래와 같이 오류가 발생했다.
Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.
당황했지만.. 읽어보니 JDK 버전이 맞지 않아서 발생한 듯 보였다.
기존에 나는 JDK 11을 사용 중이었고, 새로운 프로젝트에서는 JDK 17을 다운로드 받았기 떄문.
우선은 project Structure 탭에 들어갔다.
SDK는 17로 잘 설정되어 있었다. Language level 이 11로 되어있었는데.. 이것 때문인가? 싶어서 SDK default로 바꾸었다.
근데 지금 생각해보니 이렇게 확신이 없는 채로 정확히 알고 있지 않은 환경설정을 바꾸는 것은 정말.. 위험한 행동이라는 생각이 들었다.
뒤늦게 Language Level이 무엇인지 찾아보았다.
Language Level은 프로젝트에서 사용할 Java 문법 및 기능의 버전을 지정하는 설정이다.
즉, 코드 작성 시 어떤 버전의 Java 문법을 사용할 수 있는지 결정하는 역할을 한다.
1️⃣ Language Level의 역할
- 프로젝트에서 지원하는 Java 문법을 결정
- Java 버전에 따라 추가된 기능을 사용할 수 있도록 함
- 컴파일러가 코드 검사 시 해당 버전의 문법에 맞는지 체크
2️⃣ Language Level과 JDK 버전 차이
- JDK 버전 → 실제 컴파일과 실행을 담당하는 Java 버전
- Language Level → 코드에서 사용할 수 있는 문법 버전을 결정
-> 즉, JDK 17을 설치했다고 해도 Language Level이 Java 11로 설정되어 있다면, Java 17의 기능은 사용하지 못함. JDK와 다르게, 설정된 버전보다 높은 Java 기능은 사용할 수 없음
-> 최신 기능을 사용하려면 Language Level을 최신 Java 버전에 맞춰 조정해야 함
뭐.. 당연히 다시 실행해도 에러는 여전했다. 그래도 11버전에 있던 레벨을 17로 맞춰줬으니 엄청난 타격을 준 것은 아니다.
settings 찾기
왼측 상단에 IntelliJ IDEA를 클릭하면 'settings...' 메뉴가 있다. 이걸 찾아야 했는데, 처음엔 헤매서 gradle탭에 있는 톱니바퀴 설정 아이콘으로 들어갔다.
Build, Execution, Deployment -> Build Tools -> Gradle로 들어간다.
- 여기서 Gradle JVM이 11로 되어있었다. 이걸 다운로드 받은 17로 변경해주어야 한다.
- apply 적용 후 ok버튼을 눌러서 설정창을 닫아준다.
- 새로고침을 다시 눌렀더니 에러 없이 임포트가 정상적으로 실행되었다. 에러 해결!
각 프로젝트에 맞게 JDK버전을 다르게 설정할 수 있다. 빌드에 설정한 버전에 맞추어서 사용해야하니 유의하자.