source value 8 is obsolete and will be removed in a future release

android studio 앱 프로젝트에서 kotlinOptions {jvmTarget = “17”} 로 설정하여 java 8 과 관련한 경고 메시지를 해결한 과정을 기록한다.

언제부터인지 제목의 저 경고 메시지가 나온다. 사용하는 안드로이드 스튜디오는

Android Studio Iguana | 2023.2.1 Patch 2
Build #AI-232.10300.40.2321.11668458, built on April 4, 2024


Runtime version: 17.0.9+0-17.0.9b1087.7-11185874 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

이다. 앱 실행에는 아무 문제없어서 그냥 무시했는데 오늘 해결하기로 했다. 앱 모듈 build.gradle.kts 에

compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

와 같이 설정하였다. 원래는 위의 두 곳 모두 JavaVersion.VERSION_1_8 이라고 되어 있었다. 실행해 보니 다음의 오류가 나오면서 뻗는다(Sync Now 의 결과인지 Rebuild 또는 Run 의 결과인지 잘 기억나지 않는다):

Execution failed for task ':app:kspDebugKotlin'.
> 'compileDebugJavaWithJavac' task (current target is 17) and 'kspDebugKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain

혹시나 해서 build.gradle.kts 맨 위에 다음을 넣었다(참고: https://developer.android.com/build/jdks#kts):

kotlin {
jvmToolchain(17)
}

그랬더니 해결은 되지 않고 다른 오류가 나오면서 또 뻗는다:

Unsupported Java. 
Your build is currently configured to use Java 21.0.2 and Gradle 8.4.

Settings 로 들어갔다:

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

여기에서 다음을 선택하였다:

jbr-17 (/opt/android-studio-2023.2.1/android-studio/jbr)

그러나 여전히 ‘kspDebugKotlin’ task (current target is 1.8) jvm target compatibility should be set to the same Java version 메시지가 나오면서 뻗는다. 다시 build.gradle.kts 으로 가서 다음과 같이 바꾸었다:

kotlinOptions {
jvmTarget = "17"
}

원래는 jvmTarget = “1.8” 로 되어 있었다. Sync Now. Rebuild. 드디어 컴파일에 성공하였다. 빨간 경고 메시지도 모두 사라졌다.

Leave a Comment