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. 드디어 컴파일에 성공하였다. 빨간 경고 메시지도 모두 사라졌다.