设置sbt以使用Java 7编译?

设置sbt以使用Java 7编译?

运行compile任务时,我正在收到编译错误,因为源代码引用了仅在Java 7中出现的java.nio.file包中的新类。

我在build.sbt有以下build.sbt

javaHome := Some(file("/opt/jdk/jdk1.7.0"))

fork := true

在sbt:

> show java-home
[info] Some(/opt/jdk/jdk1.7.0)

它在Eclipse中编译并运行良好。 我如何设置sbt来使用Java 7进行编译?

采纳答案:

最可靠的(也许只有)的方式来做这个,当时它在JDK7文件夹中用java启动SBT。

修改你的sbt发射器脚本; 或使用这个允许您指定Java Home(以及更多!)作为命令行选项。

~/code/scratch/20111009 sbt -java-home /Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home
Starting sbt: invoke with -help for other options
[info] Loading global plugins from /Users/jason/.sbt/plugins
[info] Set current project to default-3e990a (in build file:/Users/jason/code/scratch/20111009/)
> console
[info] Compiling 1 Scala source to /Users/jason/code/scratch/20111009/target/scala-2.9.1/classes...
[info] Starting scala interpreter...
[info] 
Welcome to Scala version 2.9.1.final (OpenJDK 64-Bit Server VM, Java 1.7.0-internal).
Type in expressions to have them evaluated.
Type :help for more information.

scala> java.util.Objects.equals(null, null)
res0: Boolean = true

只需设置javaHome := Some(file("/Library/Java/JavaVirtualMachines/openjdk-1.7-x86_64/Contents/Home"))更改用于编译和fork进程的Java版本,但不会更改Java标准版本库中的类路径,也没有用于运行测试的版本,它们总是运行与SBT相同的JVM。

参考更多解答:设置sbt以使用Java 7编译?,转载请保留设置sbt以使用Java 7编译?

更多:sbt