我有一个使用 Swing 的 Scala 2.10.3 项目。我有以下 catch-22 情况:
我可以编译
$ sbt -java-home /usr/lib/jvm/java-6-openjdk-amd64/ test:products
但是当我尝试运行时:
$ sbt run
sbt
认为JVM版本发生了变化,并尝试重新编译所有内容,因此由于第一个问题而引发编译错误。怎么说服
sbt
运行我已经编译的项目,尽管使用不同的 JVM?使用 assembly
不是一种选择,因为这需要几分钟,而且我需要经常这样做。我也尝试使用
export JAVA_HOME
切换,但这具有相同的效果,sbt 将尝试重新编译 run
.
最佳答案
您可以使用 javaHome
key ,范围为 run
任务,控制运行时使用的JDK。
假设您使用 JDK6 运行 SBT,如下所示:
sbt -java-home /usr/lib/jvm/java-6-openjdk-amd64/
为
javaHome
添加自定义位置在您的 build.sbt
:// no custom Java_HOME without forking
fork in run := true
// your JDK7 install
javaHome in run := Some(file("/usr/lib/jvm/java-7-openjdk-amd64/"))
compile
然后将使用 JDK6,和 run
JDK7。您也可以删除 in run
在上述定义中使其适用于 run
和 test
.见 Forking有关更多详细信息,请参阅 SBT 文档的部分。
关于scala - Sbt:使用 Java 6 编译并使用 Java 7 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21955771/