Scala 오류: error scalac: bad option ‘-target:jvm-1.8’

IntelliJ IDEA에서 Scala를 사용하는 중 컴파일 시 다음과 같은 오류 메시지가 발생하였습니다. 이 현상은 사용 중인 프로젝트에서 갑작스럽게 발생하였습니다.

Error:scalac: 'jvm-1.8' is not a valid choice for '-target'
Error:scalac: bad option: '-target:jvm-1.8'

원인

Scala 2.11.4 이전 버전에는 jvm-1.8이 target으로 설정되어 있지 않아 발생하는 현상[참고1]입니다. IntelliJ IDEA에서 Default로 -target:jvm-1.8 옵션이 설정되어 있기 때문에 발생합니다.

해결 방법

이 문제를 해결하기 위해서는 2가지의 방법이 있습니다. 진행 중인 프로젝트는 gradle 기반으로 scala를 사용하기 때문에 2번의 방법으로 해결하였습니다. 프로젝트 구성에 따라 아래의 해결 방법을 참고하여 설정합니다.

방법 1. IntelliJ IDEA의 Perference에서 해당 Argument 제거

  1. IntelliJ IDEA의 Preferences 에서 Scala compiler 검색
  2. Additional compiler options = -target:jvm-1.8 제거

방법 2. gradle을 사용하는 경우,

build.gradle에 다음과 같이 jvm을 1.7로 설정한다.

tasks.withType(ScalaCompile) {
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

[참고2] http://stackoverflow.com/questions/29041527/jvm-1-8-is-not-a-valid-choice-for-target

Scala 최신 버전을 사용하지 않아서 발생하는 현상으로 나의 경우에는 Spark 버전(2.10.x)에 맞춰서 Scala를 쓰다보니 발생하였다. 사실 Spark의 Scala 버전이 업데이트되면 자연스럽게 해결될 문제다. 하지만 Spark가 아닌 다른 라이브러리와의 경우에도 Scala 버전 충돌로 인해 동일한 문제가 발생 가능하다는 사실을 알고 있어야겠다.