코틀린으로 신나게 코딩하고 있었는데, 갑자기 JVM 타겟이 맞지 않다며 에러가 발생했다.

오류 메세지

Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper ‘-jvm-target’ option



내가 자바 1.6 버전을 쓸 리가 없을텐데… 이거 어제 만든 예제 프로젝트인데… 하며 스택오버플로우를 보니 에러 메세지에 쓰여있는 대로 수동으로 특정 JVM 타겟을 지정해주었다.

// app/build.gradle

android {
    ...

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
}

Gradle 파일 kotlinOptionsjvmTarget을 추가한 후 Sync를 누르니 잘 작동했다.

Kotlin Complier 설정

이 문제를 같이 지켜본 회사 동료 분이 30분쯤 후에 내 자리로 오시더니 근본적인 솔루션을 찾아주셨다. Kotlin Complier 에서 Target JVM version을 수동으로 지정해 줄 수 있었다.


정말 원망스럽게도 나는 1.6 버전을 쓰고 있었다. 버전을 1.8로 높이고 나니 gradle에서 수동으로 버전을 지정하지 않아도 에러 메세지가 뜨지 않고 정상적으로 잘 작동했다.


References

  • https://stackoverflow.com/questions/48988778/cannot-inline-bytecode-built-with-jvm-target-1-8-into-bytecode-that-is-being-bui