Подтвердить что ты не робот

Как заставить SBT использовать Java 8?

Как заставить SBT скомпилировать файлы классов Java 8. Я добавил scalacOptions + = "-target: jvm-1.8", но он дает следующее сообщение об ошибке:

[error] 'jvm-1.8' is not a valid choice for '-target'
[error] bad option: '-target:jvm-1.8'
[error] (compile:compile) Compilation failed

Я использую версию SBT 0.15.5.

Я знаю, что я использую Java 8 для компиляции, когда я добавил это в build.sbt, но я все еще удивляюсь, почему сказывается свойство scalacOptions, и я не знаю, какой результат производит файл scalac.

initialize := {
  val _ = initialize.value
  if (sys.props("java.specification.version") != "1.8")
    sys.error("Java 8 is required for this project.")
}
4b9b3361

Ответ 1

В файле build.sbt требуется следующее.

javacOptions ++= Seq("-source", "1.8", "-target", "1.8", "-Xlint")

initialize := {
  val _ = initialize.value
  if (sys.props("java.specification.version") != "1.8")
    sys.error("Java 8 is required for this project.")
}

Ответ 2

Поддержка в scalac для jvm-1.8 была добавлена ​​в 2.11.4.

Scala версия (2.11.2) не поддерживает параметр -target:jvm-1.8.

$ scala -version
Scala code runner version 2.11.2 -- Copyright 2002-2013, LAMP/EPFL

$ scala -target
Usage: -target:<target>
 where <target> choices are jvm-1.5, jvm-1.6, jvm-1.7 (default: jvm-1.6)

bad option: '-target'

Usage: scala <options> [<script|class|object|jar> <arguments>]
   or  scala -help

All options to scalac (see scalac -help) are also allowed.