오류 수정 방법 : BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version
애러 개요
여러 프로젝트를 다루다 보니, 앱을 빌드할 때 아래와 같은 오류가 나는 경우가 생겼다.
BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 64
문제 원인
현재 Gradle 버전과 Java Version이 일치하지 않을 때 오류가 발생한다.
나의 경우 JDK 버전을 20으로 쓰고 Gradle 버전을 8.0으로 써서 문제가 생겼다.
JDK 버전 확인 방법
1. 프로젝트에 설정된 JDK 버전을 확인하기 위해 다음 메뉴에 진입한다. Android Studio > Preferences...
2. Build, Execution, Deployment > Build Tools > Gradle에 진입하면 오른쪽 아래에서 Gradle JDK를 통해 현재 설정된 JDK 버전 확인이 가능하다.
여기서 보면 Gradle을 프로젝트 내부의 gradle-wrapper.properties 파일에서 가져온다고 되어 있으므로 아래와 같이 Gradle 버전을 확인할 수 있다.
Gradle 버전 확인 방법
1. 프로젝트에 설정된 JDK 버전은 [프로젝트 폴더]/gradle/wrapper/gradle-wrapper.properties에서 확인 가능하다.
2. gradle-wrapper.properties 파일을 보면 아래와 같이 설정되어 있는데, 여기서 distributionUrl 에서 [Gradle 버전] 확인이 가능하다.
distributionUrl=https\://services.gradle.org/distributions/gradle-[Gradle 버전]-bin.zip
해결방법
이에 대한 호환성 표는 아래와 같다. 현재 내가 쓰고 있는 것은 JDK20 버전으므로 Gradle 버전을 8.1로 설정하는 것이 필요하다.
Java version | First Gradle version to support it |
8 | 2.0 |
9 | 4.3 |
10 | 4.7 |
11 | 5.0 |
12 | 5.4 |
13 | 6.0 |
14 | 6.3 |
15 | 6.7 |
16 | 7.0 |
17 | 7.3 |
18 | 7.5 |
19 | 7.6 |
20 | 8.1 |
따라서 gradle 8.0이 지원되는 JDK인 JDK17로 JDK를 변경하면 빌드가 성공하는 것을 볼 수 있다.
Reference