首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有java-home的sbt使用缺省jdk编译java源代码

带有java-home的sbt使用缺省jdk编译java源代码
EN

Stack Overflow用户
提问于 2016-05-18 17:45:51
回答 1查看 1.4K关注 0票数 0

我有一个混合的scala/java项目,并且有一个主机上有多个jdks。默认的java (通过alternatives)是jdk8。如果我构建一个指定了不同java-home的项目,java源代码仍然是使用路径上的缺省jdk构建的。

代码语言:javascript
复制
$ java -version
java version "1.8.0_20"

根据主机的设置,/usr/bin/java链接到/etc/alternatives/java,后者链接到/usr/lib/jvm/jdk8/bin/java

代码语言:javascript
复制
$ sbt -java-home /usr/lib/jvm/jdk7 compile
....
[warn] Error reading API from class file : java.lang.UnsupportedClassVersionError: my/org/package/SomeJavaClass : Unsupported major.minor version 52.0
....
$ javap -verbose target/scala_2.10/classes/my/org/package/SomeJavaClass.class | grep major
major version: 52
$ javap -verbose target/scala_2.10/classes/my/org/package/SomeScalaClass.class | grep major
major version: 51

正如您所看到的,java源代码被编译到java8(假设从默认路径衍生出一个java进程),而scala源代码则使用jdk7进行构建。通过在构建定义中指定javacOptions,我可以为Java7编译java源代码:

代码语言:javascript
复制
javacOptions ++= Seq("-source","1.7","-target", "1.7")

但我希望避免在构建源代码中这样做,如果可能的话,我更喜欢在编译时使用sbt参数为java7构建。

如何让SBT使用不同的java (假设fork一个java进程并指定完整路径)?如果SBT没有从java-home目录生成javac,这会被认为是sbt的bug吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-18 17:48:53

您可以在build.sbt或Build.scala中为Scala编译器设置目标JVM:

scalacOptions +=“-目标:jvm-1.7”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37295912

复制
相关文章

相似问题

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