如何强制SBT使用Java 8?

时间:2014-09-19 03:56:39

标签: scala sbt

如何强制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.")
}

2 个答案:

答案 0 :(得分:37)

您的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.")
}

答案 1 :(得分:19)

在2.11.4中添加了scalac对jvm-1.8的支持。

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.