首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sbt:使用Java 6编译,使用Java 7运行

Sbt:使用Java 6编译,使用Java 7运行
EN

Stack Overflow用户
提问于 2014-02-22 14:40:25
回答 2查看 2.4K关注 0票数 4

我有一个使用Swing的Scala2.10.3项目。我有以下情况-22:

  • 我必须针对Java 6进行编译,因为Swing中有一个不使用Java 7的bug
  • 我必须使用Java 7运行该项目,因为Linux上的OpenJDK 6已经崩溃(与各种Swing组件崩溃)

我可以用

代码语言:javascript
复制
$ sbt -java-home /usr/lib/jvm/java-6-openjdk-amd64/ test:products

但当我试图逃跑时:

代码语言:javascript
复制
$ sbt run

sbt显示JVM版本发生了变化,并试图重新编译所有内容,从而引发第一个问题导致的编译错误。

如何说服sbt运行已经编译的项目,尽管使用的是不同的JVM?使用assembly不是一种选择,因为这需要几分钟,我需要做很多事情。

我也尝试使用export JAVA_HOME进行切换,但这具有相同的效果,sbt将尝试在run上重新编译。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-22 16:59:35

您可以使用 key (作用域为run任务)来控制运行时使用的JDK。

假设您使用JDK6运行SBT,如下所示:

代码语言:javascript
复制
sbt -java-home /usr/lib/jvm/java-6-openjdk-amd64/

javaHome中添加build.sbt的自定义位置

代码语言:javascript
复制
// 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,使其同时应用于runtest

有关更多详细信息,请参阅SBT文档的Forking部分。

票数 7
EN

Stack Overflow用户

发布于 2014-02-22 14:55:58

这里有一个可能的解决方案:这个项目是用IntelliJ思想开发的。

  • IDEA运行在JDK 7上。
  • 使用第三方sbt插件作为IDEA。
  • 在“文件->设置”-> (第三方)中,定位"IDE“,选中”使用替代JRE“,并在此处选择JDK6。
  • 现在可以使用集成的sbt控制台编译该项目,因为sbt是使用JDK 6启动的。
  • 使用标准的IDEA运行配置运行项目,使用“启动前:运行SBT操作'test:products'”。IDEA将使用JDK 7启动该项目。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21955771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档